Fragnasia: Local-to-Root in Every Linux Kernel Before May 13—Patch Immediately
CRITICAL: A logic bug in the Linux XFRM ESP-in-TCP subsystem allows unprivileged local attackers to write arbitrary bytes to kernel memory and gain root privileges. It's been quietly disclosed, a working proof-of-concept exists, and all major Linux distributions are patching. If you're running an older kernel on a system with untrusted local users (shared hosting, multi-tenant servers), this is a code-red incident.
The vulnerability at a glance
CVE-2026-46300 (Fragnasia) is a local privilege escalation flaw in the Linux kernel's XFRM (IPsec) subsystem. A local, unprivileged attacker can trigger a logic bug that grants them a memory-write primitive into the kernel's page cache. Using this, they can corrupt read-only system binaries in memory — typically /usr/bin/su — and execute arbitrary code as root.
Discovered by: William Bowling (Zellic)
Affected: All Linux kernels released before May 13, 2026
Exploitability: High. Public PoC exists. No race condition required. No elevated privileges needed to trigger.
Impact: Full root compromise of the system.
This belongs to the Dirty Frag vulnerability class, which was disclosed last week. Fragnasia is a separate bug in the same XFRM surface, but with a cleaner exploit path — no chaining of multiple vulnerabilities required.
How it works: the page cache corruption primitive
The XFRM (IPsec) subsystem manages encrypted tunnel negotiations. The bug lives in the ESP-in-TCP (Encapsulating Security Payload over TCP) handler. When a specially crafted packet sequence is sent, the subsystem's state machine has a logic flaw that fails to properly validate a pointer write.
This gives the attacker a memory-write primitive — the ability to write controlled bytes to kernel memory. Normally this would crash the kernel immediately, but XFRM targets the kernel's page cache, a memory region that persists across operations.
The attacker then targets the page cache of read-only system binaries like /usr/bin/su:
- Load
/usr/bin/suinto the page cache (by runningsunormally) - Corrupt the binary's code in memory using the XFRM primitive (change the authentication logic)
- Call
suagain with the corrupted version in cache - The modified binary now runs arbitrary code as root
The beauty of the exploit: it doesn't require a race condition. It's deterministic. There's no window where a clean version of the binary could be reloaded. The attacker has full control over when to corrupt and when to execute.
Vulnerable versions
All Linux kernels released before May 13, 2026.
That includes:
- Ubuntu: 20.04 LTS, 22.04 LTS (if not recently updated), 24.04 LTS
- Debian: All stable and testing releases before May 13
- AlmaLinux / Rocky Linux / CentOS Stream: All versions before May 13
- CloudLinux: All versions before May 13
- RHEL 9: All releases before the May 13 patch
Check your kernel version:
uname -r
If the release date is before May 13, 2026, you're vulnerable. You can check the exact release date:
# For Debian-family kernels:
dpkg -l | grep linux-image
# For RHEL-family kernels:
rpm -qa | grep kernel
Then cross-reference the kernel version with the official release date.
Better: just apply the patches now. Distribution maintainers have already built them.
Detection: are you vulnerable?
Kernel version check (quick):
uname -r
# If released before 2026-05-13, assume vulnerable
Test with PoC (if you need absolute confirmation):
The PoC is publicly available on GitHub (v12-security/pocs). Running it on a vulnerable system will successfully escalate to root. Don't run this in production unless you want to prove the vulnerability and document the incident.
Process audit (detect exploitation attempts):
# Monitor for suspicious XFRM/IPsec operations from unprivileged users
grep -i xfrm /var/log/auth.log
grep -i ipsec /var/log/auth.log
Legitimate IPsec operations typically come from privileged daemons (strongSwan, libreswan, etc.), not unprivileged users.
Mitigation: three options (ranked by effectiveness)
Option 1: Patch immediately (recommended)
This is the only proper fix.
Ubuntu / Debian:
apt update
apt install --only-upgrade linux-image-generic linux-headers-generic
# or for your specific kernel flavor (cloud, generic, etc.)
# Reboot required
reboot
AlmaLinux 9 / Rocky 9 / CentOS Stream:
dnf update kernel
# Reboot required
reboot
CloudLinux:
yum update kernel
# Reboot required
reboot
Verify after reboot:
uname -r
# Should be newer than the last vulnerable version for your distro
Timeline: Schedule within 24–48 hours. This is critical.
Option 2: Disable vulnerable kernel modules (temporary mitigation)
If you can't reboot immediately, remove the XFRM and RxRPC modules. Warning: This breaks IPsec VPNs and AFS distributed filesystems. Only use this if you don't rely on either.
# Remove the vulnerable modules
rmmod esp4 esp6 rxrpc 2>/dev/null || true
# Blacklist them so they don't reload on reboot
cat > /etc/modprobe.d/fragnasia-mitigation.conf <<EOF
install esp4 /bin/false
install esp6 /bin/false
install rxrpc /bin/false
EOF
Verify:
lsmod | grep -E 'esp4|esp6|rxrpc'
# Should return nothing
Tradeoffs:
- ✓ Immediate effect, no reboot required
- ✗ Breaks any IPsec VPN tunnels (site-to-site, client VPN)
- ✗ Breaks AFS (Andrew File System)
- ✗ Only temporary; patch anyway during the next maintenance window
Only use this if you:
- Don't run IPsec VPNs
- Don't use AFS
- Need a few days to schedule reboots
- Have a patched kernel already tested and ready to deploy
Option 3: Network isolation + access control (defense-in-depth)
If the system is isolated from untrusted local users (no SSH, no shell accounts for unprivileged users), the attack surface is significantly reduced:
# Audit local user accounts
cut -d: -f1,3 /etc/passwd | awk -F: '$2 >= 1000' | cut -d: -f1
# If only root and service accounts exist, the risk is lower
# But still patch — this is defense-in-depth, not a fix
Tighten SSH access:
# In /etc/ssh/sshd_config
AllowUsers root@<trusted-ips>
PermitRootLogin prohibit-password
PubkeyAuthentication yes
PasswordAuthentication no
Reload:
systemctl reload ssh
This reduces the likelihood of local exploitation but doesn't fix the vulnerability. Still patch.
Related vulnerabilities: the Dirty Frag class
This week saw multiple kernel privilege escalation flaws:
Dirty Frag (disclosed last week): Chains two separate XFRM bugs:
- CVE-2026-43284 (xfrm-ESP Page-Cache Write)
- CVE-2026-43500 (RxRPC Page-Cache Write)
Requires chaining both vulnerabilities. More complex exploitation but same impact (local → root).
Copy Fail (CVE-2026-32202): A separate privilege escalation now actively exploited in the wild. CISA added it to the Known Exploited Vulnerabilities catalog on May 1 and ordered federal agencies to patch by May 15.
Pack2TheRoot (patched in April): A decade-old PackageKit daemon flaw also giving root access.
All three are local privilege escalations. All three have public PoCs. All three are being actively patched by distributions.
Hardening recommendations
Immediate (next 24 hours):
- Patch the kernel (Option 1 above)
- Plan reboots for production servers
- Audit who has local shell access
Short-term (this week):
- Verify all patches are deployed
- Check CloudLinux/cPanel systems for kernel updates
- Review firewall rules: are unprivileged users needed local access?
Long-term (ongoing):
- Enable SELinux or AppArmor (defense-in-depth against memory corruption)
- Use a WAF + reverse proxy for web servers (limits local access)
- Run services in containers (isolates attack surface)
- Subscribe to Linux kernel security lists (know about upcoming fixes before they're weaponized)
For cPanel / CloudLinux users
CloudLinux kernels often lag distribution kernels. Check for updates:
# Check your kernel version
uname -r
# Check available updates
yum list kernel
# or
dnf list kernel
# Force an update if newer versions exist
yum install kernel-latest
Then reboot:
reboot
After reboot, verify:
uname -r
# Should be >= the patched version for your distro
cPanel's EasyApache can coexist with kernel updates — they're separate. Update both.
Timeline
- May 1, 2026: CISA adds Copy Fail to Known Exploited Vulnerabilities
- May 13, 2026: Linux distros patch Fragnasia; public PoC released
- May 13, 2026: Kernel patches available for all major distributions
- Today: You should be patching or mitigating
Bottom line
If your kernel was built before May 13, 2026, you're vulnerable. Local users can escalate to root. If you only have root and service accounts (no human SSH users), the risk is lower but not zero — service account compromises can chain this exploit.
Patch within 24 hours. If you can't reboot immediately, disable the modules. But don't stay vulnerable for more than a few days.
A working exploit exists. It's not theoretical. Patch now.