Two Roads to Root: Linux Kernel LPEs with Public Exploits and No Patch
What Happened
Two unrelated Linux kernel local privilege escalation bugs now ship with public working exploits and no patch behind them. CVE-2026-46331, the one people are calling 'pedit COW', is an out-of-bounds write in the kernel's act_pedit traffic control subsystem. DirtyClone abuses packet cloning logic. JFrog put up a full DirtyClone walkthrough on June 25. It is detailed enough to reproduce.
Both sit in networking-adjacent kernel code paths. That matters because those are the subsystems running on container hosts, Kubernetes nodes, and multi-tenant infrastructure. JFrog's 'DirtyFrag family' label reads like more variants are being held or sequenced.
Why This Is Different
Local privilege escalation normally waits in line behind remote code execution. That math breaks once you assume initial access, and right now you should. The Amazon Q Developer flaw hands attackers code execution on a developer workstation through a malicious repo. PTC Windchill's KEV-listed RCE hands them a shell on an application server. SharkLoader drops Cobalt Strike Beacon through a fresh delivery mechanism that existing loader detections won't match.
The order to work the queue is Linux, Windchill, Q. The order an attacker will work it is the same.
Any of those three initial-access paths leaves an attacker one LPE short of root. COW-class bugs are back, a decade after the original Dirty COW, and the exploit surface is every Linux kernel running in production.
Immediate Mitigations
No patch means hardening is the only move:
- Disable unprivileged user namespaces (
kernel.unprivileged_userns_clone=0). This is the prerequisite for most container-escape scenarios that lean on these bugs. - Restrict CAP_NET_ADMIN hard. pedit COW needs either CAP_NET_ADMIN in a namespace or local unprivileged access to traffic control.
- Add EDR rules for anomalous
tc/netlink activity from non-root processes. - Inventory every kernel version across production, CI runners, K8s nodes, and developer hosts. Stage patches the moment they land upstream.
The DirtyFrag naming says this cluster is not finished. Expect more disclosures in this code area over the coming weeks.
What to do
Inventory all Linux kernel versions across production, CI, K8s, and dev hosts by end of week
Disable unprivileged user namespaces on all multi-tenant and container hosts within 48 hours
Deploy EDR detection for anomalous tc/netlink syscalls from non-root processes by Friday
Restrict CAP_NET_ADMIN via seccomp profiles and PodSecurityPolicies this sprint