CVE-2026-98376
NoneCVSS
—
EPSS
0.1%
Published
Oct 9, 2026
CISA due date
—
Cloudanix analysis
A bug in the Linux kernel's BPF map handling could let certain programs read or write memory they should not reach, potentially crashing systems or allowing unauthorized access.
- Exploitation
- Local Privilege
- Attacker needs
- Low Privilege
- Complexity
- Moderate
- Impact
- Privilege Gain
- Component
- OS kernel
- Class
- Memory Corruption
- Remediation
- Patch
- Effort
- Medium
- Patch risk
- Low
What it actually does
Bypassing max_entries equality check during percpu array inner map replacement allows replacement map with smaller size; percpu_array_map_gen_lookup inlines stale larger index_mask as JIT immediate, enabling out-of-bounds pptrs[] access on subsequent lookups.
Why it matters to the business
Kernel memory corruption or crashes on Linux systems that use BPF programs with percpu arrays as inner maps, risking service disruption and potential privilege escalation in affected environments.
How an attack unfolds
Attacker loads a BPF program using a percpu array as an inner map, then replaces it at runtime with a map having fewer max_entries; the missing check lets the original larger index_mask remain in JIT code, so crafted lookups read or write beyond allocated pptrs[].
How to fix it
Apply the upstream kernel patch that assigns array_map_meta_equal to percpu_array_map_ops.map_meta_equal and includes the new selftest; rebuild and deploy the fixed kernel across all affected Linux distributions.
How to confirm the fix worked
Inspect kernel source to confirm percpu_array_map_ops.map_meta_equal now references array_map_meta_equal; execute the added selftest to verify replacement of differently-sized percpu arrays is rejected.
Typical attack path
- Create percpu array map with large max_entries as inner map template
- Load outer map and attach BPF program that performs lookups
- Replace inner map with new percpu array having smaller max_entries
- Trigger repeated lookups via the outer map to exercise stale index_mask
- Observe or exploit resulting out-of-bounds memory access
How to detect it
Audit BPF map creation and update syscalls via kernel tracing or auditd; watch for percpu array replacements followed by lookup patterns; inspect kernel crash dumps for faults involving index_mask or pptrs arrays.
What your security team should do
- Prioritize kernel updates on systems running BPF workloads with inner maps
- Review and restrict unprivileged BPF map creation where possible
- Monitor kernel logs for map replacement events and unexpected OOB faults
- Test the provided selftest in CI pipelines before broad rollout
The record
In the Linux kernel, the following vulnerability has been resolved: bpf: Use array_map_meta_equal for percpu array inner map replacement percpu_array_map_ops.map_meta_equal points to the generic bpf_map_meta_equal(), which does not compare max_entries. When a percpu array serves as an inner map, replacing it with one that has fewer max_entries bypasses the check. Since percpu_array_map_gen_lookup() inlines the original template's index_mask as a JIT immediate, a lookup on the replacement map can access pptrs[] out of bounds. Point percpu_array_map_ops.map_meta_equal to array_map_meta_equal(), which already enforces the max_entries equality check. Add a selftest to verify that replacing a percpu array inner map with a differently-sized one is rejected.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|