In the Linux kernel, the following vulnerability has been resolved:
bnx2x: Fix multiple UBSAN array-index-out-of-bounds
Fix UBSAN warnings that occur when using a system with 32 physical cpu cores or more, or when the user defines a number of Ethernet queues greater than or equal to FP_SB_MAX_E1x using the num_queues module parameter.
Currently there is a read/write out of bounds that occurs on the array "struct stats_query_entry query" present inside the "bnx2x_fw_stats_req" struct in "drivers/net/ethernet/broadcom/bnx2x/bnx2x.h". Looking at the definition of the "struct stats_query_entry query" array:
struct stats_query_entry query[FP_SB_MAX_E1x+ BNX2X_FIRST_QUEUE_QUERY_IDX];
FP_SB_MAX_E1x is defined as the maximum number of fast path interrupts and has a value of 16, while BNX2X_FIRST_QUEUE_QUERY_IDX has a value of 3 meaning the array has a total size of 19. Since accesses to "struct stats_query_entry query" are offset-ted by BNX2X_FIRST_QUEUE_QUERY_IDX, that means that the total number of Ethernet queues should not exceed FP_SB_MAX_E1x (16). However one of these queues is reserved for FCOE and thus the number of Ethernet queues should be set to [FP_SB_MAX_E1x -1] (15) if FCOE is enabled or [FP_SB_MAX_E1x] (16) if it is not.
This is also described in a comment in the source code in drivers/net/ethernet/broadcom/bnx2x/bnx2x.h just above the Macro definition of FP_SB_MAX_E1x. Below is the part of this explanation that it important for this patch
/* * The total number of L2 queues, MSIX vectors and HW contexts (CIDs) is * control by the number of fast-path status blocks supported by the * device (HW/FW). Each fast-path status block (FP-SB) aka non-default * status block represents an independent interrupts context that can * serve a regular L2 networking queue. However special L2 queues such * as the FCoE queue do not require a FP-SB and other components like * the CNIC may consume FP-SB reducing the number of possible L2 queues * * If the maximum number of FP-SB available is X then: * a. If CNIC is supported it consumes 1 FP-SB thus the max number of * regular L2 queues is Y=X-1 * b. In MF mode the actual number of L2 queues is Y= (X-1/MF_factor) * c. If the FCoE L2 queue is supported the actual number of L2 queues * is Y+1 * d. The number of irqs (MSIX vectors) is either Y+1 (one extra for * slow-path interrupts) or Y+2 if CNIC is supported (one additional * FP interrupt context for the CNIC). * e. The number of HW context (CID count) is always X or X+1 if FCoE * L2 queue is supported. The cid for the FCoE L2 queue is always X. */
However this driver also supports NICs that use the E2 controller which can handle more queues due to having more FP-SB represented by FP_SB_MAX_E2. Looking at the commits when the E2 support was added, it was originally using the E1x parameters: commit f2e0899f0f27 ("bnx2x: Add 57712 support"). Back then FP_SB_MAX_E2 was set to 16 the same as E1x. However the driver was later updated to take full advantage of the E2 instead of having it be limited to the capabilities of the E1x. But as far as we can tell, the array "stats_query_entry query" was still limited to using the FP-SB available to the E1x cards as part of an oversignt when the driver was updated to take full advantage of the E2, and now with the driver being aware of the greater queue size supported by E2 NICs, it causes the UBSAN warnings seen in the stack traces below.
This patch increases the size of the "stats_query_entry query" array by replacing FP_SB_MAX_E1x with FP_SB_MAX_E2 to be large enough to handle both types of NICs.
Stack traces:
UBSAN: array-index-out-of-bounds in drivers/net/ethernet/broadcom/bnx2x/bnx2x_stats.c:1529:11 index 20 is out of range for type 'stats_query_entry [19]' CPU: 12 PID: 858 Comm: systemd-network Not tainted 6.9.0-060900rc7-generic #202405052133 Hardware name: HP ProLiant DL360 Gen9/ProLiant DL360 ---truncated---
CVSS Details
- CVSS 3.1 Base Score: 7.8
- CVSS 3.1 Vector: (CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H)
Covered by Rapid7
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Amazon Linux Ami 2 | — | Upgrade perfUpgrade kernel-develUpgrade bpftool-debuginfoUpgrade kernel-tools-develUpgrade python-perfUpgrade kernel-debuginfo-common-aarch64Upgrade perf-debuginfoUpgrade kernel-livepatch-4.14.352-267.564Upgrade kernel-toolsUpgrade kernel-debuginfo-common-x86_64Upgrade kernel-debuginfoUpgrade python-perf-debuginfoUpgrade kernel-tools-debuginfoUpgrade kernel-headersUpgrade kernelUpgrade bpftoolUpgrade kernel-livepatch-5.10.223-211.872 | Mar 4, 2025 | Jul 30, 2024 |
| Debian | — | Upgrade linux-6.1Upgrade linux | Aug 7, 2024 | Jul 30, 2024 |
| Huawei Euleros 2_0_sp10 | — | Upgrade kernel-toolsUpgrade kernel-abi-stablelistsUpgrade kernel-tools-libsUpgrade kernelUpgrade python3-perf | Nov 11, 2024 | Jul 30, 2024 |
| Huawei Euleros 2_0_sp11 | — | Upgrade kernel-tools-libsUpgrade kernel-toolsUpgrade python3-perfUpgrade bpftoolUpgrade kernelUpgrade kernel-abi-stablelists | Oct 9, 2024 | Jul 30, 2024 |
| Huawei Euleros 2_0_sp12 | — | Upgrade kernelUpgrade python3-perfUpgrade bpftoolUpgrade kernel-abi-stablelistsUpgrade kernel-tools-libsUpgrade kernel-tools | Nov 5, 2024 | Jul 30, 2024 |
| Huawei Euleros 2_0_sp8 | — | Upgrade kernel-tools-libsUpgrade kernel-toolsUpgrade bpftoolUpgrade python-perfUpgrade python3-perfUpgrade perfUpgrade kernel-develUpgrade kernelUpgrade kernel-headers | Jan 21, 2025 | Jul 30, 2024 |
| Huawei Euleros 2_0_sp9 | — | Upgrade kernelUpgrade kernel-tools-libsUpgrade kernel-toolsUpgrade python3-perf | Nov 11, 2024 | Jul 30, 2024 |
| Oracle_linux | — | Upgrade kernel-uek | Oct 16, 2024 | Jul 30, 2024 |
| Redhat_linux | — | No solution exists | Jul 9, 2025 | Jul 30, 2024 |
| Suse | — | Upgrade kernel-kvmsmall-livepatch-develUpgrade gfs2-kmp-defaultUpgrade kernel-azureUpgrade dlm-kmp-rtUpgrade dtb-allwinnerUpgrade dtb-caviumUpgrade kernel-rt-livepatchUpgrade ocfs2-kmp-64kbUpgrade kernel-64kb-optionalUpgrade kernel-defaultUpgrade ocfs2-kmp-defaultUpgrade kernel-xen-develUpgrade kernel-default-vdsoUpgrade kselftests-kmp-64kbUpgrade kernel-devel-rtUpgrade dtb-alteraUpgrade kselftests-kmp-azureUpgrade kernel-debug-vdsoUpgrade kernel-trace-develUpgrade kernel-default-livepatchUpgrade kernel-develUpgrade kernel-rt_debug-livepatch-develUpgrade kernel-default-livepatch-develUpgrade gfs2-kmp-azureUpgrade dtb-lgUpgrade cluster-md-kmp-64kbUpgrade reiserfs-kmp-azureUpgrade dtb-amdUpgrade kernel-64kb-develUpgrade kernel-azure-optionalUpgrade kernel-debug-develUpgrade dtb-hisiliconUpgrade kselftests-kmp-rtUpgrade kernel-debugUpgrade dlm-kmp-64kbUpgrade kernel-rt_debug-develUpgrade kernel-ec2-baseUpgrade dtb-sprdUpgrade kernel-64kb-extraUpgrade kernel-rt-extraUpgrade kernel-rt-develUpgrade cluster-md-kmp-rtUpgrade kernel-default-optionalUpgrade dtb-appleUpgrade kernel-default-baseUpgrade kernel-xen-baseUpgrade dtb-xilinxUpgrade kernel-obs-buildUpgrade kernel-source-vanillaUpgrade dtb-nvidiaUpgrade kernel-trace-baseUpgrade dtb-mediatekUpgrade ocfs2-kmp-azureUpgrade reiserfs-kmp-defaultUpgrade dtb-freescaleUpgrade dtb-renesasUpgrade kernel-rt-optionalUpgrade reiserfs-kmp-rtUpgrade gfs2-kmp-rtUpgrade kernel-symsUpgrade kernel-azure-extraUpgrade dtb-amlogicUpgrade kernel-debug-livepatch-develUpgrade kernel-ec2-develUpgrade gfs2-kmp-64kbUpgrade dtb-socionextUpgrade kernel-default-base-rebuildUpgrade kernel-default-manUpgrade reiserfs-kmp-64kbUpgrade kernel-sourceUpgrade kernel-obs-qaUpgrade dtb-marvellUpgrade kernel-docs-htmlUpgrade kernel-macrosUpgrade kernel-kvmsmall-vdsoUpgrade kernel-kvmsmallUpgrade kernel-azure-livepatch-develUpgrade dtb-exynosUpgrade dtb-broadcomUpgrade dtb-armUpgrade kernel-xenUpgrade kernel-traceUpgrade kernel-azure-baseUpgrade kernel-source-azureUpgrade kernel-default-extraUpgrade kselftests-kmp-defaultUpgrade kernel-64kbUpgrade dtb-qcomUpgrade kernel-rt-vdsoUpgrade kernel-rt_debugUpgrade kernel-rt-livepatch-develUpgrade kernel-zfcpdumpUpgrade kernel-syms-rtUpgrade kernel-docsUpgrade kernel-default-develUpgrade dtb-amazonUpgrade dlm-kmp-defaultUpgrade ocfs2-kmp-rtUpgrade dtb-rockchipUpgrade dlm-kmp-azureUpgrade kernel-syms-azureUpgrade kernel-source-rtUpgrade kernel-rt_debug-vdsoUpgrade kernel-ec2Upgrade kernel-devel-azureUpgrade kernel-64kb-livepatch-develUpgrade kernel-kvmsmall-develUpgrade cluster-md-kmp-defaultUpgrade cluster-md-kmp-azureUpgrade kernel-azure-develUpgrade dtb-apmUpgrade kernel-rtUpgrade kernel-azure-vdso | Dec 5, 2025 | Sep 10, 2024 |
| Ubuntu | — | Upgrade linux-image-generic-lpaeUpgrade linux-image-lowlatencyUpgrade linux-image-gcp-lts-22.04Upgrade linux-image-5.15.0-1068-gcpUpgrade linux-image-lowlatency-hwe-22.04Upgrade linux-image-5.15.0-1072-azureUpgrade linux-image-raspi-nolpaeUpgrade linux-image-ibm-classicUpgrade linux-image-nvidia-lowlatencyUpgrade linux-image-oemUpgrade linux-image-6.8.0-44-lowlatencyUpgrade linux-image-6.8.0-45-genericUpgrade linux-image-lowlatency-64k-hwe-20.04Upgrade linux-image-lowlatency-64kUpgrade linux-image-6.8.0-1014-azureUpgrade linux-image-lowlatency-hwe-20.04Upgrade linux-image-6.8.0-1013-nvidia-lowlatency-64kUpgrade linux-image-6.8.0-1013-nvidiaUpgrade linux-image-5.4.0-1043-iotUpgrade linux-image-raspi2-hwe-18.04Upgrade linux-image-6.8.0-1012-oemUpgrade linux-image-snapdragon-hwe-18.04Upgrade linux-image-ibmUpgrade linux-image-6.8.0-45-generic-64kUpgrade linux-image-nvidia-lowlatency-64kUpgrade linux-image-gcp-lts-20.04Upgrade linux-image-5.15.0-1066-kvmUpgrade linux-image-aws-lts-22.04Upgrade linux-image-gkeopUpgrade linux-image-azure-lts-22.04Upgrade linux-image-nvidia-64k-6.8Upgrade linux-image-5.15.0-1052-gkeopUpgrade linux-image-5.15.0-121-generic-64kUpgrade linux-image-bluefieldUpgrade linux-image-genericUpgrade linux-image-oem-22.04aUpgrade linux-image-5.4.0-1051-xilinx-zynqmpUpgrade linux-image-virtual-hwe-24.04Upgrade linux-image-6.8.0-1012-oracleUpgrade linux-image-generic-64k-hwe-24.04Upgrade linux-image-5.4.0-1116-raspiUpgrade linux-image-generic-64k-hwe-22.04Upgrade linux-image-6.8.0-44-generic-64kUpgrade linux-image-raspi2Upgrade linux-image-6.8.0-1010-gkeUpgrade linux-image-5.15.0-121-genericUpgrade linux-image-nvidiaUpgrade linux-image-generic-64k-hwe-20.04Upgrade linux-image-oracle-lts-20.04Upgrade linux-image-oem-22.04Upgrade linux-image-6.8.0-1012-oracle-64kUpgrade linux-image-5.4.0-1132-awsUpgrade linux-image-oem-20.04bUpgrade linux-image-gke-5.15Upgrade linux-image-6.8.0-44-genericUpgrade linux-image-6.8.0-1015-awsUpgrade linux-image-virtualUpgrade linux-image-5.4.0-1099-gkeopUpgrade linux-image-5.15.0-1069-awsUpgrade linux-image-5.4.0-1120-kvmUpgrade linux-image-azure-lts-20.04Upgrade linux-image-ibm-lts-20.04Upgrade linux-image-5.4.0-1136-gcpUpgrade linux-image-5.4.0-1079-ibmUpgrade linux-image-gkeop-5.4Upgrade linux-image-oracleUpgrade linux-image-5.15.0-121-lowlatencyUpgrade linux-image-5.4.0-195-lowlatencyUpgrade linux-image-5.15.0-1062-ibmUpgrade linux-image-xilinx-zynqmpUpgrade linux-image-5.4.0-1137-azureUpgrade linux-image-generic-hwe-20.04Upgrade linux-image-generic-hwe-24.04Upgrade linux-image-5.4.0-195-genericUpgrade linux-image-nvidia-6.8Upgrade linux-image-intel-iotgUpgrade linux-image-oem-20.04dUpgrade linux-image-gkeop-5.15Upgrade linux-image-virtual-hwe-18.04Upgrade linux-image-5.15.0-1062-raspiUpgrade linux-image-5.15.0-1066-gkeUpgrade linux-image-6.8.0-1014-gcpUpgrade linux-image-awsUpgrade linux-image-generic-64kUpgrade linux-image-nvidia-64kUpgrade linux-image-6.8.0-1014-azure-fdeUpgrade linux-image-5.15.0-121-generic-lpaeUpgrade linux-image-5.15.0-121-lowlatency-64kUpgrade linux-image-5.15.0-1067-oracleUpgrade linux-image-aws-lts-20.04Upgrade linux-image-6.8.0-1012-ibmUpgrade linux-image-5.4.0-1131-oracleUpgrade linux-image-raspi-hwe-18.04Upgrade linux-image-5.15.0-1064-nvidia-lowlatencyUpgrade linux-image-5.15.0-1035-xilinx-zynqmpUpgrade linux-image-6.8.0-44-lowlatency-64kUpgrade linux-image-oracle-64kUpgrade linux-image-oem-20.04cUpgrade linux-image-lowlatency-64k-hwe-22.04Upgrade linux-image-intelUpgrade linux-image-virtual-hwe-20.04Upgrade linux-image-6.8.0-1013-nvidia-lowlatencyUpgrade linux-image-oem-22.04bUpgrade linux-image-generic-hwe-22.04Upgrade linux-image-raspiUpgrade linux-image-ibm-lts-24.04Upgrade linux-image-generic-hwe-18.04Upgrade linux-image-azure-fdeUpgrade linux-image-kvmUpgrade linux-image-azureUpgrade linux-image-oem-20.04Upgrade linux-image-virtual-hwe-22.04Upgrade linux-image-5.4.0-195-generic-lpaeUpgrade linux-image-6.8.0-1011-raspiUpgrade linux-image-6.8.0-1013-nvidia-64kUpgrade linux-image-generic-lpae-hwe-20.04Upgrade linux-image-azure-fde-lts-22.04Upgrade linux-image-gcpUpgrade linux-image-5.15.0-1064-nvidiaUpgrade linux-image-lowlatency-hwe-18.04Upgrade linux-image-azure-cvmUpgrade linux-image-oem-22.04cUpgrade linux-image-5.15.0-1072-azure-fdeUpgrade linux-image-5.15.0-1064-intel-iotgUpgrade linux-image-oem-osp1Upgrade linux-image-5.4.0-1092-bluefieldUpgrade linux-image-oem-22.04dUpgrade linux-image-gkeUpgrade linux-image-oracle-lts-22.04 | Sep 12, 2024 | Jul 30, 2024 |
| Vmware Photon_os | — | Use 'tdnf update' to upgrade all packages to the latest version. | Jan 20, 2025 | Jul 30, 2024 |
Prioritise with Active Threat Intelligence
With curated Threat Intelligence, you can see which vulnerabilities truly put you at risk, prioritize what matters most, and act before attackers do.
Explore Intelligence Hub