CVE-2026-53094: Linux Kernel BPF Device-Bound Program Use-After-Free Crash
A flaw in the Linux kernel's BPF (Berkeley Packet Filter) subsystem causes a use-after-free vulnerability when a device-bound XDP program is hardened through constant blinding during JIT compilation. When the kernel optimizes constant values in these programs by cloning and replacing them, a stale pointer in the offload structure is not updated. This stale pointer later triggers a page fault and kernel crash when the network namespace is torn down. The issue is specific to dev-bound-only programs, which combine the normal JIT path with an offload structure that must remain synchronized.
Source data · NVD / CISA · public domain
- CVSS
- 3.1 · 7.8 HIGH · CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
- Weaknesses (CWE)
- —
- Affected products
- 1 configuration(s)
- Published / Modified
- 2026-06-24 / 2026-07-21
NVD description (verbatim)
In the Linux kernel, the following vulnerability has been resolved: bpf: Fix stale offload->prog pointer after constant blinding When a dev-bound-only BPF program (BPF_F_XDP_DEV_BOUND_ONLY) undergoes JIT compilation with constant blinding enabled (bpf_jit_harden >= 2), bpf_jit_blind_constants() clones the program. The original prog is then freed in bpf_jit_prog_release_other(), which updates aux->prog to point to the surviving clone, but fails to update offload->prog. This leaves offload->prog pointing to the freed original program. When the network namespace is subsequently destroyed, cleanup_net() triggers bpf_dev_bound_netdev_unregister(), which iterates ondev->progs and calls __bpf_prog_offload_destroy(offload->prog). Accessing the freed prog causes a page fault: BUG: unable to handle page fault for address: ffffc900085f1038 Workqueue: netns cleanup_net RIP: 0010:__bpf_prog_offload_destroy+0xc/0x80 Call Trace: __bpf_offload_dev_netdev_unregister+0x257/0x350 bpf_dev_bound_netdev_unregister+0x4a/0x90 unregister_netdevice_many_notify+0x2a2/0x660 ... cleanup_net+0x21a/0x320 The test sequence that triggers this reliably is: 1. Set net.core.bpf_jit_harden=2 (echo 2 > /proc/sys/net/core/bpf_jit_harden) 2. Run xdp_metadata selftest, which creates a dev-bound-only XDP program on a veth inside a netns (./test_progs -t xdp_metadata) 3. cleanup_net -> page fault in __bpf_prog_offload_destroy Dev-bound-only programs are unique in that they have an offload structure but go through the normal JIT path instead of bpf_prog_offload_compile(). This means they are subject to constant blinding's prog clone-and-replace, while also having offload->prog that must stay in sync. Fix this by updating offload->prog in bpf_jit_prog_release_other(), alongside the existing aux->prog update. Both are back-pointers to the prog that must be kept in sync when the prog is replaced.
5 reference(s) · View on NVD →
SEC.co analysis · AI-assisted, reviewed against source
Technical summary
The vulnerability exists in the interaction between BPF constant blinding (enabled when bpf_jit_harden >= 2) and device-bound-only XDP programs. When bpf_jit_blind_constants() clones a BPF program for security hardening, bpf_jit_prog_release_other() updates the aux->prog pointer to reference the surviving clone but neglects to update offload->prog. This leaves offload->prog pointing to freed memory. During network namespace cleanup, bpf_dev_bound_netdev_unregister() iterates the device's program list and calls __bpf_prog_offload_destroy(offload->prog), dereferencing the dangling pointer and causing a page fault. The fix synchronizes both back-pointers (aux->prog and offload->prog) in bpf_jit_prog_release_other() whenever a program clone replaces the original.
Business impact
Systems running kernel-based network packet inspection, XDP acceleration, or programmable network offloading features may experience unexpected kernel crashes and service disruptions. Containers and multi-tenant environments using network namespaces are particularly vulnerable, as namespace cleanup triggers the fault. This can lead to unplanned downtime, data loss, and denial of service. DevOps and cloud infrastructure teams relying on XDP for DDoS mitigation or performance optimization are directly exposed.
Affected systems
The Linux kernel is affected. Exploitation requires: (1) kernel built with BPF support and JIT compilation enabled; (2) bpf_jit_harden set to 2 or higher; and (3) creation of a BPF_F_XDP_DEV_BOUND_ONLY program on a network device within a network namespace. The xdp_metadata selftest reliably reproduces the issue. Standard installations without explicit XDP dev-bound program usage are not affected, but deployments using XDP for network acceleration are at risk.
Exploitability
Exploitation requires local access and the ability to load and execute BPF programs, which is gated by CAP_BPF/CAP_SYS_ADMIN. The crash is deterministic when the triggering conditions are met: constant blinding must be enabled and a dev-bound-only XDP program must be created and then cleaned up. No authentication or remote access is needed. The vulnerability results in kernel crash (denial of service) rather than privilege escalation, though the crash occurs in a privileged context.
Remediation
Apply a kernel patch that updates offload->prog alongside aux->prog in bpf_jit_prog_release_other(). The fix ensures both back-pointers are synchronized when a program clone replaces the original during constant blinding. Alternatively, disable BPF JIT constant blinding by setting bpf_jit_harden to 0 or 1, though this trades security hardening for stability. For production systems running XDP workloads, patching is strongly recommended.
Patch guidance
Monitor your Linux distribution and kernel vendor for security updates addressing CVE-2026-53094. Kernel versions should be verified against the official Linux kernel security advisories and your distribution's patch releases. Check your current kernel version (uname -r) and compare against vendor advisory recommendations. If you are actively using BPF dev-bound XDP programs with constant blinding enabled, prioritize applying the patch to prevent namespace-cleanup crashes. Test in a non-production environment first to ensure compatibility with your workload.
Detection guidance
Monitor kernel logs and dmesg for page fault messages originating from __bpf_prog_offload_destroy() or __bpf_offload_dev_netdev_unregister(), especially during namespace cleanup or container shutdown. Kernel crash dumps and BUG messages referencing offload structures are indicators. Enable audit logging for BPF program loading (ausearch -k bpf) to track when dev-bound programs are created. Observe for unexpected system reboots or namespace cleanup hangs in containerized environments. Correlate timing with XDP program deployment or network namespace teardown.
Why prioritize this
This vulnerability warrants high priority for organizations using XDP for network acceleration, DDoS mitigation, or packet inspection. The CVSS score of 7.8 reflects high integrity and availability impact. Although exploitation requires local access and BPF capabilities, the deterministic crash can disrupt service in cloud and container platforms where namespace lifecycle is frequent. The fix is straightforward and low-risk, making remediation cost-effective.
Risk score, explained
CVSS 3.1 score of 7.8 (HIGH) reflects: Attack Vector = Local (requires CAP_BPF); Attack Complexity = Low (crash is deterministic under stated conditions); Privileges Required = Low (BPF requires elevated capability); User Interaction = None; Scope = Unchanged; Confidentiality Impact = High (kernel memory access during crash); Integrity Impact = High (kernel data structures); Availability Impact = High (kernel panic, denial of service). The score does not account for the specific requirement of enabling constant blinding and using dev-bound-only XDP, which narrows the affected population but not the severity conditional on that configuration.
Frequently asked questions
Do I need to disable XDP or constant blinding to work around this?
Not necessarily. You can defer patching by setting bpf_jit_harden to 0 or 1 (disabling or lowering constant blinding), but this reduces security hardening. A kernel patch is the proper fix and restores the security benefit. For critical systems, patch as soon as your distribution releases an update.
Does this affect standard BPF programs or only device-bound XDP?
Only device-bound-only BPF programs (BPF_F_XDP_DEV_BOUND_ONLY) are vulnerable. Standard BPF programs and non-dev-bound XDP programs are not affected because they either do not have an offload structure or follow a different compilation path.
How does this manifest in containers and Kubernetes?
In containerized environments using network namespaces, the crash occurs during pod cleanup or namespace teardown. If a pod has loaded a dev-bound XDP program with constant blinding enabled, destroying the namespace triggers the page fault. This can delay pod termination or cause unexpected node issues.
Is this a remote vulnerability?
No. Exploitation requires local access and the ability to load BPF programs, which requires CAP_BPF or CAP_SYS_ADMIN. There is no remote attack surface. The impact is localized to systems where unprivileged BPF loading is permitted or where administrators use dev-bound XDP.
This analysis is based on publicly disclosed CVE information as of the publication date. Verify all patch versions, affected kernel versions, and distribution-specific guidance against official vendor advisories before applying remediation. CVSS scores and severity assessments are provided for reference; your organization's risk profile and specific configuration may differ. No exploit code or proof-of-concept is provided. Always test patches in non-production environments prior to deployment. Source: NVD (public-domain), retrieved 2026-08-01. Analysis generated by SEC.co (claude-haiku-4-5).
Affected vendors
Related vulnerabilities
- CVE-2026-0270HIGHCortex XSOAR Path Traversal on Linux — Exploit Requirements & Patching Guide
- CVE-2026-0271HIGHPalo Alto Networks Prisma Access Agent Linux Privilege Escalation
- CVE-2026-10001HIGHChrome Sandbox Escape via PerformanceManager Use-After-Free
- CVE-2026-10002HIGHGoogle Chrome PDFium Use-After-Free Vulnerability (CVSS 8.8)
- CVE-2026-10003HIGHChrome Use-After-Free Code Execution Vulnerability Analysis
- CVE-2026-10006HIGHChrome WebAudio Race Condition Remote Code Execution
- CVE-2026-10007HIGHChrome Use-After-Free in SVG Arbitrary Code Execution (CVSS 8.8)
- CVE-2026-10009HIGHChrome Skia Integer Overflow Sandbox Escape – Patch Guidance