Pular para o conteúdo principal
Close
Security

Dirty Frag: Deterministic LPE to Root via Container Escape

Gabriel Ferraresi· CEO | Tech86May 27, 20265 min
dirty fraglinuxcontainer escapekuberneteslpe

Dirty Frag chains two kernel bugs into a deterministic root shell from any unprivileged container. At Tech86, we have watched this class of vulnerability recur — but this time, the highest-value target is clear: AI inference nodes with GPU access. One compromised container pivots to host root and owns every co-resident workload. Container isolation protects against resource access, not against shared memory corruption in the kernel.

The mechanism: two CVEs, one chain, deterministic root

Dirty Frag exploits the kernel's page cache — the shared cache of file pages in memory. Every process on the host, including containers, references the same cached pages. There is no per-namespace copy. There is no cgroup isolation. The page cache belongs to the host, and every process sees it.

CVE-2026-43284 (CVSS 8.8) targets the xfrm-ESP subsystem of IPsec. An in-place decryption bug present since 2017 allows arbitrary 4-byte writes into the page cache via a spliced pipe. CVE-2026-43500 (CVSS 7.8) targets the RxRPC subsystem, with a bug introduced in 2023 — same class of write primitive. Chained together, the attacker corrupts the cached pages of /usr/bin/su with setuid(0) + execve("/bin/sh") shellcode, executes su, and gets a root shell. Deterministic. No race condition. No kernel panic. One command.

Confirmed on Ubuntu 24.04, RHEL 10.1, Fedora 44, openSUSE, CentOS Stream 10, and AlmaLinux 10. Every major Linux distribution is vulnerable. What sets Dirty Frag apart from earlier exploits like Dirty Pipe is reliability: there is no timing window, no race condition. The chain works every time.

Why AI nodes are the highest-value target

GPU compute nodes are large hosts running dozens of containers simultaneously. A single compromised container pivots to host root and affects every co-resident workload — inference models, data pipelines, API services. The blast radius is disproportionate.

AI containers frequently run with elevated privileges for CUDA access. This lowers the barrier between container and host. Training workloads on InfiniBand/RoCE with kernel-mode IPsec use exactly the interfaces Dirty Frag abuses — AF_KEY and XFRM netlink are part of these workloads' networking stack. The attacker does not need initial privileged access; the legitimate workload itself loads the vulnerable modules.

Multi-tenant Kubernetes GPU pools are the most critical scenario. Nebius AI Cloud issued an explicit advisory about container escape via Dirty Frag. The page cache does not respect namespace boundaries — corruption inside a container is visible to every process on the host by design. At Tech86, we factor this dynamic into isolation design for AI workloads: containers are not security boundaries when the kernel shares memory.

9 years of exposure

The xfrm-ESP bug was introduced in 2017. Seven years later, in 2023, the RxRPC bug expanded the attack surface. In May 2026, patches were committed to mainline. On May 7, the embargo was broken by Hyunwoo Kim (@v4bel). On May 8, Microsoft confirmed active exploitation in the wild.

Nine years. Any actor — nation-state, APT group, ransomware operator — who discovered the xfrm-ESP bug before May 2026 had an undetectable LPE against the entire Linux ecosystem. No public PoC, no advisory, no patch. Page cache corruption detection is notoriously difficult. There is no network signature, no suspicious syscall log. The exploit writes to shared memory that the kernel considers valid.

At Tech86, we have learned that long exposure windows are the rule, not the exception. The bug was there for nearly a decade. The question is not whether someone exploited it before disclosure — it is how many did so without anyone knowing.

What the defaults do not protect

Docker's default seccomp profile blocks AF_RXRPC. But it does NOT block AF_KEY. Containerd's default profile has the same gap. This means most production Kubernetes clusters allow the syscall that CVE-2026-43284 uses to initiate the chain.

Pod Security Standards at the Restricted profile with allowPrivilegeEscalation: false blocks the final step — the privilege escalation that turns page cache corruption into code execution. But it does not prevent the corruption itself. The page cache is already corrupted; the attacker only needs to find another escalation path. It is a necessary layer, not a sufficient one.

Module blacklisting in /etc/modprobe.d/dirtyfrag.confinstall esp4 /bin/false, install esp6 /bin/false, install rxrpc /bin/false — removes the vectors without a reboot. But the tradeoff is real: disabling esp4/esp6 terminates kernel-mode IPsec tunnels. For workloads that depend on IPsec, this mitigation is not viable without restructuring the networking stack.

The real fix is architectural

Patches are necessary and urgent. Kernel 6.18.22+, 6.19.12+, or 7.0+ include the fixes. AWS, Azure, and GKE have already rolled out patched node images. But patches are reactive — they fix the specific bug, not the vulnerability class.

The Linux kernel was not designed with page cache isolation between containers in mind. Every subsystem that interacts with the page cache is a potential attack surface. Dirty Pipe (2022), CopyFail (CVE-2026-31431), and Dirty Frag are all the same class. The pattern is clear. As long as containers share the same kernel and the same page cache, this vulnerability will keep appearing.

For multi-tenant GPU nodes, the real defense is kernel isolation: gVisor, Kata Containers, or dedicated nodes. At Tech86, we operate Kubernetes with custom seccomp per workload, Pod Security Standards Restricted as default, and nodes with kernels updated within hours. For AI workloads that require real isolation, we offer environments with dedicated kernels — because experience has shown us that containers alone are not enough when the attacker has a page cache write primitive.

If your Kubernetes cluster runs AI workloads on multi-tenant GPU nodes, Dirty Frag is the nightmare your threat model needs to include. Explore our Managed Cloud and understand how we operate infrastructure with the security layers this reality demands.

Interested in this solution?

Explore our managed services and infrastructure.

Explore Managed Cloud

Frequently Asked Questions

Yes, as long as the kernel has esp4/esp6 or rxrpc modules loaded. The exploit is deterministic — no race condition, no kernel panic. One command, root shell. Ubuntu 24.04, RHEL 10.1, Fedora 44, openSUSE, CentOS Stream 10, and AlmaLinux 10 are all vulnerable.

They are the highest-value targets. GPU compute nodes run dozens of containers with elevated privileges for CUDA access. Workloads on InfiniBand/RoCE with IPsec use exactly the interfaces Dirty Frag abuses. One compromised container pivots to host root and compromises every co-resident workload.

Yes. Blacklisting esp4, esp6, and rxrpc modules in /etc/modprobe.d/ blocks the vectors without a reboot. A seccomp profile blocking AF_KEY and XFRM netlink prevents the exploit from inside the container. But the definitive fix requires an updated kernel.

Yes. On May 8, 2026, Microsoft confirmed active exploitation in the wild. The embargo was broken on May 7 by Hyunwoo Kim. This is not a theoretical vulnerability — adversaries are actively using it against Linux infrastructure.

The xfrm-ESP bug has existed since 2017. The RxRPC bug was introduced in 2023. That is 9 years of exposure for the first CVE. Any actor who discovered this before May 2026 had an undetectable LPE against the entire Linux ecosystem.

Blog — Get in Touch

Have a question about our articles or services? Our team is ready to help.

Schedule Meeting

Book a time.

Schedule Now

Email

Send us a message.

[email protected]

WhatsApp

Quick chat.

Address

Avenida Paulista, 1636 - São Paulo - SP - 01310-200

Tech86 Specialist

Online now

Hello! How can we help scale your business today?

Tech86 Engineering

We value your privacy

We use cookies and similar technologies to optimize your experience, analyze site traffic, and personalize content. By clicking "Accept All", you agree to the use of all cookies. Read our Privacy Policy.