Fragnasia: Local-to-Root in Every Linux Kernel Before May 13—Patch Immediately

Share
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:

  1. Load /usr/bin/su into the page cache (by running su normally)
  2. Corrupt the binary's code in memory using the XFRM primitive (change the authentication logic)
  3. Call su again with the corrupted version in cache
  4. 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)

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.

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):

  1. Patch the kernel (Option 1 above)
  2. Plan reboots for production servers
  3. Audit who has local shell access

Short-term (this week):

  1. Verify all patches are deployed
  2. Check CloudLinux/cPanel systems for kernel updates
  3. Review firewall rules: are unprivileged users needed local access?

Long-term (ongoing):

  1. Enable SELinux or AppArmor (defense-in-depth against memory corruption)
  2. Use a WAF + reverse proxy for web servers (limits local access)
  3. Run services in containers (isolates attack surface)
  4. 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.