CVE-2026-89579bpf: Harden bloom filter sizing and indexing on 32-bit kernels
Updated under an hour ago ()
Does this affect you?
It affects Linux. Add what you run to find out whether that includes you.
No exploitation reported and no EPSS estimate yet.
Do this next
Free account, 1 product
In the Linux kernel, the following vulnerability has been resolved: bpf: Harden bloom filter sizing and indexing on 32-bit kernels bloom_map_alloc() has two 32-bit-specific problems when the computed bitmap reaches the U32_MAX fallback case. First, BITS_TO_BYTES(U32_MAX) is evaluated with 32-bit arithmetic. The addition performed by DIV_ROUND_UP wraps, so the map allocates only the fixed-size bloom filter object while keeping bitset_mask == U32_MAX. 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 set_bit() takes a signed long bit number and x86 test_bit() eventually feeds the index to variable_test_bit(long, ...). On 32-bit kernels, hashes in [0x80000000, U32_MAX] therefore become negative bit offsets. x86 bt/bts with a memory operand interpret those offsets relative to the supplied base, so a map with bitset_mask == U32_MAX can read or write before bloom->bitset even after allocating the full 512 MiB bitmap. Keep the U32_MAX fallback, but split each hash into a word pointer and an in-word bit number before calling test_bit() or set_bit(). The bitops argument is then always in [0, BITS_PER_LONG - 1], while BIT_WORD(h) still selects the intended word in the full bitmap. Compute the bitset size from (u64)bitset_mask + 1 before passing the final size to bpf_map_area_alloc(). 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 CAP_BPF.
- CVSS
- 7.8 HIGH (v3.1, CNA)CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
- Weakness (CWE)
- Not given
- Known exploited
- Not in CISA's KEV catalog
- EPSS (exploitation in the next 30 days)
- Not loaded for this CVE
- Assigned by
- Linux
- NVD analysis
- Received
- Record last updated
- Oct 19, 2026
- First seen by InfoSec Signals
- Oct 9, 2026
Affected products
Linux Linux linux:linux (from the name) | from 9330986c03006ab1d33d243b7cfe598a7a3c1baa before a6183bc683f97f4317f7e84939ca7fff37c5688b; 9330986c03006ab1d33d243b7cfe598a7a3c1baa builds before 80551bf8912c42d1e3d55eec6fa3c40f306c3de8; 9330986c03006ab1d33d243b7cfe598a7a3c1baa builds before 3b7a13eccfcf97714ffc1ca6aa663d66d4a30e29; 9330986c03006ab1d33d243b7cfe598a7a3c1baa builds before 272fcb4ba6fab678db0eb966dc81c4c804bef64a; from 9330986c03006ab1d33d243b7cfe598a7a3c1baa before dff481e12b3f127739f6a4ea7cef2c25dc12e056; 9330986c03006ab1d33d243b7cfe598a7a3c1baa builds before 11c1e836710dcba03e50454a4eedfdbaf8d3050e | CNA record |
References
- https://git.kernel.org/stable/c/a6183bc683f97f4317f7e84939ca7fff37c5688b
- https://git.kernel.org/stable/c/80551bf8912c42d1e3d55eec6fa3c40f306c3de8
- https://git.kernel.org/stable/c/3b7a13eccfcf97714ffc1ca6aa663d66d4a30e29
- https://git.kernel.org/stable/c/272fcb4ba6fab678db0eb966dc81c4c804bef64a
- https://git.kernel.org/stable/c/dff481e12b3f127739f6a4ea7cef2c25dc12e056
- https://git.kernel.org/stable/c/11c1e836710dcba03e50454a4eedfdbaf8d3050e
The CVE record on cve.org NVD's entry
The CVE record is authoritative. Products marked “from the name” were identified from the CNA's free-text names, not a CPE, and are matched less certainly. This product uses the NVD API but is not endorsed or certified by the NVD.