Research: All three major eBPF security monitors (Falco, Tracee, Tetragon) can be silently disabled via BPF map poisoning
Source Reddit Cybersecurity
Discussion
Research has identified a telemetry trust boundary weakness in the three major eBPF-based security monitors—Falco, Tracee, and Tetragon—where their runtime configuration stored in BPF maps can be silently modified by any process with CAP_BPF capability. This allows an attacker with the same privilege level to poison these maps, suppressing all security event detection without causing errors or crashes, effectively disabling the monitors while they report as healthy. The issue arises because the Linux kernel does not enforce per-map access control, and these tools do not currently implement available hardening measures such as bpf_map_freeze or integrity checks. The vulnerability requires CAP_BPF, a privileged capability typically available after container escape, kernel privilege escalation, or in misconfigured environments. Mitigations include tool-level hardening, restricting CAP_BPF distribution, and auditing bpf() syscalls. No official patches currently exist as this is an architectural limitation of the Linux BPF subsystem.
r/cybersecurity (opens in a new tab)u/secsecseec0 points0 comments
Published research on a telemetry trust boundary weakness affecting the three most widely deployed eBPF-based security monitors.
The finding: eBPF security tools store their runtime configuration in BPF maps (kernel data structures). The Linux kernel has no per-map access control — any process with CAP_BPF can modify any map. None of the three tools protect their maps with available hardening primitives (bpf_map_freeze, integrity checks).
A same-privilege process can modify these maps to suppress all security events. The tools keep running, health checks pass, but detection drops to zero.
Tested against: Tracee v0.24.1, Tetragon v1.4.0, Falco latest. All achieved 100% event suppression with zero logs or errors.
Think of it as: The eBPF equivalent of disabling an EDR agent, except the agent doesn't crash and keeps reporting "healthy."
CAP_BPF is privileged, but realistically available after container escape, kernel privesc, or in misconfigured environments. These are exactly the scenarios these tools are deployed to detect.
Research repo with full details and reproducible PoCs: https://github.com/azqzazq1/SunnyMapBPF