CVE-2026-74371
HighCVSS 7.8Exploitation Probability (EPSS)
Low risk3th percentile - higher than 3% of all known CVEs
Summary
A vulnerability in the Linux kernel's BPF_PROG_QUERY causes an out-of-bounds write when writing the 'query.revision' field to userspace. This occurs when userspace passes a smaller bpf_attr structure (e.g., 40 bytes, before the revision field was added), leading to a write beyond the allocated buffer. The fix propagates the user-provided attribute size to cgroup query handlers and conditionally skips writing the revision field when the buffer is too small.
Risk Assessment
The vulnerability can lead to kernel memory corruption, potentially causing system crashes, privilege escalation, or information disclosure. Organizations using BPF (e.g., in container systems, networking, or monitoring) are exposed to attacks from unprivileged users.
Recommendation
Immediately update the Linux kernel to a version containing the fix for CVE-2026-74371. If updating is not possible, restrict access to BPF_PROG_QUERY operations for unprivileged users (e.g., via LSM policies or capability restrictions).
Original NVD description (English source)
In the Linux kernel, the following vulnerability has been resolved: bpf: fix BPF_PROG_QUERY OOB write and cgroup backward compat BPF_PROG_QUERY writes back the 'query.revision' field unconditionally to userspace. If userspace passes a smaller 'bpf_attr' structure (e.g. 40 bytes, which was the layout before the addition of 'query.revision'), the kernel performs an out-of-bounds write. Fix this by propagating the user-provided attribute size 'uattr_size' down to the cgroup query handlers, and conditionally skipping writing the revision field to userspace when the provided buffer size is insufficient. query.revision in bpf_mprog_query is structurally identical to the cgroup case: a late tail field, written unconditionally. But the backward-compat hazard is not the same. The min-historical-size test is per command, and bpf_mprog_query only serves attach types that were born with revision in the struct: - tcx_prog_query -> BPF_TCX_INGRESS/EGRESS - netkit_prog_query -> BPF_NETKIT_PRIMARY/PEER tcx, netkit, the revision field, and bpf_mprog_query itself all landed in the same v6.6 merge window (053c8e1f235d added the mprog query API + revision; tcx in e420bed02507, netkit in 35dfaad7188c). There has never been a tcx/netkit BPF_PROG_QUERY userspace that doesn't know about revision. So for these commands the minimum legitimate struct already covers offset 56-64 — no old binary can be broken here. Contrast with cgroup: BPF_PROG_QUERY on cgroup attach types shipped in 2017; revision write-back was bolted on years later (120933984460). That path has a real population of pre-revision callers.

