What’s Vulnerable › Vulnerabilities
CVE-2026-98149: bpf: Fix percpu map update indexing with sparse CPU IDs
- Severity: high (CVSS 7.8 v3.1)
- Exploited in the wild: not listed in CISA KEV
- EPSS: 0.1% probability of exploitation in the next 30 days
- Public exploit or detection template: none known
- Published: 2026-09-25 · updated 2026-10-21
- Weakness: CWE-125
Description
In the Linux kernel, the following vulnerability has been resolved: bpf: Fix percpu map update indexing with sparse CPU IDs Per-CPU array, hash, and cgroup storage map updates without BPF_F_CPU or BPF_F_ALL_CPUS use a value buffer whose per-CPU slots are packed in possible-CPU order. The buffer is sized as: round_up(value_size, 8) * num_possible_cpus() The update paths iterate over possible CPUs, but use the logical CPU ID to calculate the source offset: value + size * cpu This only works when possible CPU IDs are contiguous starting at zero. For example, with a possible CPU mask of 0,2-3, the buffer contains three slots corresponding to CPUs 0, 2, and 3. CPU2 is therefore expected to use slot 1 and CPU3 slot 2. Instead, the current code uses slots 2 and 3 respectively, causing incorrect per-CPU values and an out-of-bounds read from the update buffer for CPU3. The corresponding lookup paths already use a dense offset while iterating over possible CPUs. Do the same for the array, hash, and cgroup storage update paths, advancing the source offset once for each possible CPU. BPF_F_ALL_CPUS continues to use the same value for every CPU.
Affected products
- Linux kernel: from 7.0 before 7.2.7; 7.3-rc1 — fixed in 7.2.7
How to fix
Upgrade to a fixed version: Linux kernel 7.2.7. Check the vendor advisory for mitigations.
References
- https://git.kernel.org/stable/c/75b0a6db4300e4c2c9e97a0848deaa7acfb42fb7
- https://git.kernel.org/stable/c/c16c62c91e5d6737a9fbb0a541b8b34610470a2b
Get alerted when CVE-2026-98149 or the next vulnerability affects your stack