CVE-2026-63864 Overview
CVE-2026-63864 affects the Linux kernel Berkeley Packet Filter (BPF) verifier. The flaw stems from commit e40f5a6bf88a ("bpf: correct stack liveness for tail calls"), which introduced visit_tailcall_insn() without checking its return value. The BPF verifier ignores errors returned from tail call instruction visits during program analysis. This breaks safety invariants the verifier is supposed to enforce before loading eBPF programs into the kernel.
A local attacker with the ability to load BPF programs can exploit this to compromise confidentiality, integrity, and availability of the affected system. The vulnerability was resolved by the Linux kernel maintainers in commits 6bd96e40f31d and 945816e63c86.
Critical Impact
A local attacker able to load eBPF programs can bypass verifier safety checks, potentially achieving kernel memory corruption and local privilege escalation.
Affected Products
- Linux kernel versions containing commit e40f5a6bf88a ("bpf: correct stack liveness for tail calls")
- Distributions shipping the affected upstream stable kernel branches
- Systems where unprivileged eBPF loading is enabled or where BPF-capable workloads run
Discovery Timeline
- 2026-07-19 - CVE-2026-63864 published to NVD
- 2026-07-20 - Last updated in NVD database
Technical Details for CVE-2026-63864
Vulnerability Analysis
The Linux kernel BPF verifier performs static analysis on every eBPF program before it is accepted into the kernel. It walks the instruction graph, tracking register states, stack liveness, and control-flow paths to guarantee memory safety. The introduction of visit_tailcall_insn() extended this walk to correctly account for stack liveness across tail calls.
The defect is a missing return-value check. When visit_tailcall_insn() reports a failure, the caller continues execution as if verification succeeded. Downstream verifier state can therefore diverge from what the program will actually execute at runtime, undermining the safety guarantees the verifier is designed to provide [CWE-252, CWE-754].
The issue is classified as a Kernel Vulnerability with Improper Input Validation characteristics, exploitable through local access without user interaction.
Root Cause
The root cause is the missing error propagation from visit_tailcall_insn() in the verifier's instruction-visit path. Errors that should abort verification are silently discarded. Programs that trigger the failing code path can therefore progress past checks intended to reject them, leaving the verifier's stack-liveness accounting for tail calls in an inconsistent state.
Attack Vector
Exploitation requires local access and the capability to load eBPF programs, typically CAP_BPF or CAP_SYS_ADMIN. On distributions that permit unprivileged eBPF, any local user can reach the vulnerable code path. An attacker crafts an eBPF program with tail-call constructs that force visit_tailcall_insn() to return an error the verifier ignores. The program is then accepted despite unsafe stack-liveness assumptions, providing a foothold for further kernel memory-safety abuse.
No public proof-of-concept exploit is currently listed for CVE-2026-63864, and it is not present on the CISA Known Exploited Vulnerabilities catalog.
Detection Methods for CVE-2026-63864
Indicators of Compromise
- Unexpected loading of eBPF programs by non-administrative users on production hosts
- Kernel logs showing BPF verifier anomalies, warnings, or oops messages referencing tail-call handling
- Presence of unfamiliar pinned BPF objects under /sys/fs/bpf/
- Sudden appearance of bpf() syscall activity from processes that do not normally use eBPF
Detection Strategies
- Audit bpf() syscall usage with the Linux Audit subsystem, filtering on BPF_PROG_LOAD operations and non-root UIDs
- Correlate CAP_BPF and CAP_SYS_ADMIN grants with process ancestry to identify unexpected privilege usage
- Compare loaded kernel version against patched commits 6bd96e40f31d and 945816e63c86 during vulnerability scans
- Alert on kernel ring buffer entries indicating verifier state inconsistencies or unusual BPF program rejections followed by successful loads
Monitoring Recommendations
- Forward auditd, dmesg, and journald telemetry to a centralized analytics platform for longitudinal analysis
- Baseline normal BPF program loaders (for example, systemd, tracing tools) and alert on deviations
- Monitor /proc/sys/kernel/unprivileged_bpf_disabled for runtime changes that would broaden the attack surface
How to Mitigate CVE-2026-63864
Immediate Actions Required
- Apply the upstream Linux kernel patches referenced in commits 6bd96e40f31d and 945816e63c86 as soon as vendor builds are available
- Set kernel.unprivileged_bpf_disabled=1 via sysctl to prevent unprivileged users from loading BPF programs
- Restrict CAP_BPF and CAP_SYS_ADMIN to accounts and containers that genuinely require them
- Inventory hosts running affected kernels and prioritize multi-tenant systems and container hosts for patching
Patch Information
The fix propagates the return value from visit_tailcall_insn() so verifier errors correctly abort BPF program loading. Refer to the Kernel Git commit 6bd96e40f31d and the Kernel Git commit 945816e63c86 for the authoritative source changes. Distribution kernels should be updated to versions that incorporate both commits.
Workarounds
- Disable unprivileged eBPF loading by writing 1 to /proc/sys/kernel/unprivileged_bpf_disabled and persisting the setting
- Remove CAP_BPF from container security profiles and Kubernetes pod specifications where BPF is not required
- Enforce Linux Security Module policies (SELinux, AppArmor) that restrict access to the bpf() syscall
# Disable unprivileged BPF program loading at runtime and persist across reboots
sudo sysctl -w kernel.unprivileged_bpf_disabled=1
echo 'kernel.unprivileged_bpf_disabled=1' | sudo tee /etc/sysctl.d/90-disable-unpriv-bpf.conf
# Verify the current kernel version against patched commits
uname -r
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

