In the Linux kernel, the following vulnerability has been resolved:
bpf: Fix a sdiv overflow issue
Zac Ecob reported a problem where a bpf program may cause kernel crash due to the following error: Oops: divide error: 0000 [#1] PREEMPT SMP KASAN PTI
The failure is due to the below signed divide: LLONG_MIN/-1 where LLONG_MIN equals to -9,223,372,036,854,775,808. LLONG_MIN/-1 is supposed to give a positive number 9,223,372,036,854,775,808, but it is impossible since for 64-bit system, the maximum positive number is 9,223,372,036,854,775,807. On x86_64, LLONG_MIN/-1 will cause a kernel exception. On arm64, the result for LLONG_MIN/-1 is LLONG_MIN.
Further investigation found all the following sdiv/smod cases may trigger an exception when bpf program is running on x86_64 platform: - LLONG_MIN/-1 for 64bit operation - INT_MIN/-1 for 32bit operation - LLONG_MIN%-1 for 64bit operation - INT_MIN%-1 for 32bit operation where -1 can be an immediate or in a register.
On arm64, there are no exceptions: - LLONG_MIN/-1 = LLONG_MIN - INT_MIN/-1 = INT_MIN - LLONG_MIN%-1 = 0 - INT_MIN%-1 = 0 where -1 can be an immediate or in a register.
Insn patching is needed to handle the above cases and the patched codes produced results aligned with above arm64 result. The below are pseudo codes to handle sdiv/smod exceptions including both divisor -1 and divisor 0 and the divisor is stored in a register.
sdiv: tmp = rX tmp += 1 /* [-1, 0] -> [0, 1] if tmp >(unsigned) 1 goto L2 if tmp == 0 goto L1 rY = 0 L1: rY = -rY; goto L3 L2: rY /= rX L3:
smod: tmp = rX tmp += 1 /* [-1, 0] -> [0, 1] if tmp >(unsigned) 1 goto L1 if tmp == 1 (is64 ? goto L2 : goto L3) rY = 0; goto L2 L1: rY %= rX L2: goto L4 // only when !is64 L3: wY = wY // only when !is64 L4:
[1] https://lore.kernel.org/bpf/tPJLTEh7S_DxFEqAI2Ji5MBSoZVg7_G-Py2iaZpAaWtM961fFTWtsnlzwvTbzBzaUzwQAoNATXKUlt0LZOFgnDcIyKCswAnAGdUF3LBrhGQ=@protonmail.com/
CVSS Details
- CVSS 3.1 Base Score: 5.5
- CVSS 3.1 Vector: (CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H)
Covered by Rapid7
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Alma_linux | — | Upgrade kernel-debug-modules-extraUpgrade kernel-64k-debugUpgrade kernel-docUpgrade kernel-rt-debugUpgrade kernel-rt-debug-modules-extraUpgrade kernel-rt-modules-coreUpgrade kernel-rt-debug-modulesUpgrade kernel-rtUpgrade kernel-tools-libs-develUpgrade kernel-rt-modulesUpgrade kernel-abi-stablelistsUpgrade kernel-debug-modules-coreUpgrade perfUpgrade rvUpgrade kernel-uki-virtUpgrade kernel-64k-debug-modules-coreUpgrade kernel-uki-virt-addonsUpgrade kernel-zfcpdump-coreUpgrade kernel-zfcpdump-modulesUpgrade kernel-64k-debug-devel-matchedUpgrade kernel-zfcpdump-devel-matchedUpgrade kernel-zfcpdumpUpgrade kernel-64k-modules-extraUpgrade kernel-rt-debug-modules-coreUpgrade kernel-zfcpdump-modules-coreUpgrade kernel-rt-develUpgrade kernel-64k-devel-matchedUpgrade kernel-64k-debug-modulesUpgrade bpftoolUpgrade kernel-toolsUpgrade kernel-64k-debug-coreUpgrade kernel-debugUpgrade kernel-64k-develUpgrade kernel-cross-headersUpgrade kernel-rt-coreUpgrade kernel-debug-develUpgrade kernel-64k-modules-coreUpgrade kernel-64k-debug-modules-extraUpgrade kernel-coreUpgrade kernel-tools-libsUpgrade kernel-rt-debug-develUpgrade kernel-devel-matchedUpgrade kernel-modules-extraUpgrade kernel-modulesUpgrade kernel-headersUpgrade kernel-64kUpgrade kernel-64k-debug-develUpgrade kernel-zfcpdump-develUpgrade kernel-debug-modulesUpgrade kernel-rt-modules-extraUpgrade kernel-develUpgrade python3-perfUpgrade kernel-rt-debug-coreUpgrade kernel-modules-coreUpgrade kernel-debug-devel-matchedUpgrade kernel-debug-uki-virtUpgrade rtlaUpgrade libperfUpgrade kernelUpgrade kernel-zfcpdump-modules-extraUpgrade kernel-64k-coreUpgrade kernel-debug-coreUpgrade kernel-64k-modules | Jan 14, 2025 | Oct 21, 2024 |
| Debian | — | Upgrade linux | Jul 27, 2026 | Jul 27, 2026 |
| Oracle_linux | — | Upgrade kernel | Jan 7, 2025 | Oct 21, 2024 |
| Redhat_linux | — | No solution existsUpgrade kernelUpgrade kernel-rt | Feb 10, 2025 | Oct 21, 2024 |
| Ubuntu | — | Upgrade linux-image-6.8.0-1022-nvidiaUpgrade linux-image-genericUpgrade linux-image-oem-22.04Upgrade linux-image-6.8.0-57-genericUpgrade linux-image-6.11.0-1009-awsUpgrade linux-image-6.11.0-18-genericUpgrade linux-image-oracle-lts-24.04Upgrade linux-image-6.8.0-54-genericUpgrade linux-image-oem-22.04dUpgrade linux-image-virtualUpgrade linux-image-oem-24.04Upgrade linux-image-6.11.0-1009-azureUpgrade linux-image-lowlatency-hwe-22.04Upgrade linux-image-nvidia-64k-hwe-22.04Upgrade linux-image-lowlatencyUpgrade linux-image-6.8.0-1020-oracle-64kUpgrade linux-image-gkeopUpgrade linux-image-azureUpgrade linux-image-oem-22.04cUpgrade linux-image-generic-lpaeUpgrade linux-image-6.8.0-1022-nvidia-lowlatencyUpgrade linux-image-nvidiaUpgrade linux-image-6.8.0-1024-oemUpgrade linux-image-6.11.0-1010-lowlatencyUpgrade linux-image-6.11.0-1015-oemUpgrade linux-image-gkeUpgrade linux-image-lowlatency-64kUpgrade linux-image-6.11.0-1008-raspiUpgrade linux-image-6.11.0-1009-azure-fdeUpgrade linux-image-virtual-hwe-22.04Upgrade linux-image-virtual-hwe-24.04Upgrade linux-image-gcp-64kUpgrade linux-image-gkeop-6.8Upgrade linux-image-oem-24.04bUpgrade linux-image-generic-64kUpgrade linux-image-oem-22.04aUpgrade linux-image-realtime-hwe-24.04Upgrade linux-image-6.8.0-1025-azure-fdeUpgrade linux-image-nvidia-hwe-22.04Upgrade linux-image-6.8.0-1019-raspiUpgrade linux-image-gcp-64k-lts-24.04Upgrade linux-image-nvidia-6.8Upgrade linux-image-lowlatency-64k-hwe-22.04Upgrade linux-image-6.8.0-1025-azureUpgrade linux-image-generic-64k-hwe-22.04Upgrade linux-image-6.11.0-18-generic-64kUpgrade linux-image-aws-lts-24.04Upgrade linux-image-oracleUpgrade linux-image-6.8.0-1022-ibmUpgrade linux-image-6.8.0-54-lowlatencyUpgrade linux-image-realtimeUpgrade linux-image-raspiUpgrade linux-image-6.8.0-1019-gkeUpgrade linux-image-6.11.0-1010-lowlatency-64kUpgrade linux-image-6.8.0-1022-nvidia-64kUpgrade linux-image-ibm-classicUpgrade linux-image-oracle-64kUpgrade linux-image-generic-64k-hwe-24.04Upgrade linux-image-nvidia-lowlatency-64kUpgrade linux-image-gcp-lts-24.04Upgrade linux-image-6.11.0-1009-gcpUpgrade linux-image-awsUpgrade linux-image-6.8.0-1024-gcpUpgrade linux-image-nvidia-lowlatencyUpgrade linux-image-azure-lts-24.04Upgrade linux-image-gcpUpgrade linux-image-nvidia-64kUpgrade linux-image-azure-fde-lts-24.04Upgrade linux-image-6.8.0-1024-gcp-64kUpgrade linux-image-6.11.0-1011-oracleUpgrade linux-image-6.8.0-54-lowlatency-64kUpgrade linux-image-6.8.0-54-generic-64kUpgrade linux-image-nvidia-64k-6.8Upgrade linux-image-ibm-lts-24.04Upgrade linux-image-generic-hwe-24.04Upgrade linux-image-oracle-64k-lts-24.04Upgrade linux-image-azure-nvidiaUpgrade linux-image-6.8.0-1020-oracleUpgrade linux-image-6.8.0-57-generic-64kUpgrade linux-image-6.8.0-1014-azure-nvidiaUpgrade linux-image-kvmUpgrade linux-image-6.11.0-1005-realtimeUpgrade linux-image-6.8.0-1006-gkeopUpgrade linux-image-azure-fdeUpgrade linux-image-6.8.0-1022-nvidia-lowlatency-64kUpgrade linux-image-6.8.0-1023-awsUpgrade linux-image-generic-hwe-22.04Upgrade linux-image-6.11.0-1011-oracle-64kUpgrade linux-image-oem-24.04aUpgrade linux-image-oem-22.04bUpgrade linux-image-ibm | Feb 20, 2025 | Oct 21, 2024 |
Prioritize 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