KernelScan.io

HIGH Introduced in 6.9

bpf ArenaFree OOB

CVE-2026-93045

CVSS 7.8 / 10.0 NVD

CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

KernelScan AI7.8HIGH

01

In the Linux kernel, the following vulnerability has been resolved: bpf: Reject arena frees below the arena base bpf_arena_free_pages() accepts scalar arena addresses. The runtime masks the address to the low 32 bits and reconstructs a full user address from the arena base before returning the range to the arena free tree. When the scalar value is below the low 32 bits of the arena base, full_uaddr falls below user_vm_start. The existing upper-end clipping then turns this into an out-of-range free-tree offset. A later allocation can reuse that offset and return an address below the arena mapping. Reject such frees before computing the clipped range.

02

Engine v0.6.0

Risk summary

A BPF program calling the arena free-pages helper with a carefully chosen scalar address can corrupt the arena's free tree, causing a subsequent allocation to return a pointer to kernel memory outside the arena. This gives the BPF program arbitrary kernel read/write capability, enabling privilege escalation or kernel crash. Any local user who can load BPF programs (CAP_BPF, or unprivileged BPF if enabled) can trigger this.

Affectedkernel/bpf/arena.c (bpf arena)

Vulnerability analysis

The BPF arena subsystem lets programs allocate and free shared memory using kernel helpers. The free helper takes a scalar address, keeps only the low 32 bits, and rebuilds a full address by adding the arena base. When the scalar is smaller than the low 32 bits of the base, the rebuilt address ends up below the arena's start. The existing size-limit check only catches values that are too large, not too small, so this underflow becomes an invalid entry in the arena's tracking structure. A later allocation can then hand back that same invalid address, giving the BPF program a pointer outside the arena that can read or write kernel memory. The fix rejects free requests that would produce an address below the arena before any size calculations. Any local user who can load BPF programs can reach this, which requires CAP_BPF or unprivileged BPF if the system allows it.

03

BranchIntroducedFixed inPatch commit
6.186.96.18.52a968dffa5ab3
mainline6.97.3-rc1b5a71cb2db6d
7.26.97.2.68a0863565603
6.126.96.12.11090453eaf8f14
cip/6.126.96.12.111-cip3290453eaf8f14