UBUNTU-CVE-2026-89579: High severity ubuntu/linux-hwe-edge vulnerability
In the Linux kernel, the following vulnerability has been resolved: bpf: Harden bloom filter sizing and indexing on 32-bit kernels bloommapalloc() has two 32-bit-specific problems when the computed bitmap reaches the U32MAX fallback case. First, BITSTOBYTES(U32MAX) is evaluated with 32-bit arithmetic. The addition performed by DIVROUNDUP wraps, so the map allocates only the fixed-size bloom filter object while keeping bitsetmask == U32MAX. Subsequent updates can then write past the allocated object. Second, fixing only the allocation size is not sufficient. The bloom hash is a u32, but setbit() takes a signed long bit number and x86 testbit() eventually feeds the index to variabletestbit(long, ...). On 32-bit kernels, hashes in [0x80000000, U32MAX] therefore become negative bit offsets. x86 bt/bts with a memory operand interpret those offsets relative to the supplied base, so a map with bitsetmask == U32MAX can read or write before bloom->bitset even after allocating the full 512 MiB bitmap. Keep the U32MAX fallback, but split each hash into a word pointer and an in-word bit number before calling testbit() or setbit(). The bitops argument is then always in [0, BITSPERLONG - 1], while BITWORD(h) still selects the intended word in the full bitmap. Compute the bitset size from (u64)bitsetmask + 1 before passing the final size to bpfmapareaalloc(). This fixes the original under-allocation and keeps the allocated storage consistent with the addressable bitset. Exploitation note: local privilege escalation is possible on a 32-bit x86 kernel using the under-allocation bug from a binary with CAPBPF.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
ubuntu/linux-hwe-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-42.42~24.04.1 - Upgrade
Upgrade
ubuntu/linux-riscv-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-42.42.1~24.04.1 - Upgrade
Upgrade
ubuntu/linuxto a version that resolves this vulnerability.Fixed in 7.0.0-42.42 - Upgrade
Upgrade
ubuntu/linux-awsto a version that resolves this vulnerability.Fixed in 7.0.0-1016.17 - Upgrade
Upgrade
ubuntu/linux-gcpto a version that resolves this vulnerability.Fixed in 7.0.0-1016.18 - Upgrade
Upgrade
ubuntu/linux-ibmto a version that resolves this vulnerability.Fixed in 7.0.0-1017.17 - Upgrade
Upgrade
ubuntu/linux-oem-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-1017.17 - Upgrade
Upgrade
ubuntu/linux-oracleto a version that resolves this vulnerability.Fixed in 7.0.0-1015.16 - Upgrade
Upgrade
ubuntu/linux-riscvto a version that resolves this vulnerability.Fixed in 7.0.0-42.42.1 - Compensating control
In the BPF bloom filter allocator, compute the bitset size from (u64)bitset_mask + 1 before passing the final size to bpf_map_area_alloc(), preventing the DIV_ROUND_UP addition from wrapping and causing under-allocation.
- Compensating control
For the U32_MAX fallback case on 32-bit kernels, split each bloom hash into a word pointer and an in-word bit number before calling test_bit() or set_bit(); keep BIT_WORD(h) for selecting the intended word and pass only an in-word offset to the bit operations.
Event History
Frequently Asked Questions
Which systems are exposed to this issue?
The issue is specific to 32-bit kernels using BPF bloom filter maps when the computed bitmap reaches the U32_MAX fallback case. The affected Ubuntu kernel package lines listed are linux-riscv, linux-realtime, linux-azure, linux-gcp, linux-azure-fde, linux-gke, linux-hwe-edge, and linux-gkeop.
What access does an attacker need?
The supplied severity vector indicates local access and low privileges are required, with no user interaction. Exploitation involves BPF bloom filter map operations that reach the U32_MAX bitmap fallback; the indexing issue is triggered by hash values from 0x80000000 through U32_MAX on 32-bit kernels.
What is the potential impact?
The vulnerability can cause reads or writes outside the intended bloom filter bitset allocation. The provided severity vector rates confidentiality, integrity, and availability impact as high.