CVE-2026-46300: net: skbuff: preserve shared-frag marker during coalescing
Fragnesia is a universal Linux local privilege escalation exploit, discovered by William Bowling with the V12 team. Fragnesia is a member of the Dirty Frag vulnerability class. This is a separate bug in the ESP/XFRM from dirtyfrag which has received its own patch. However, it is in the same surface and the mitigation is the same as for dirtyfrag.
It abuses a logic bug in the Linux XFRM ESP-in-TCP subsystem to achieve arbitrary byte writes into the kernel page cache of read-only files, without requiring any race condition.
The technique extends the page-cache write bug class that includes Dirty Pipe: when a TCP socket transitions to espintcp ULP mode after data has already been spliced from a file into the receive queue, the kernel processes the queued file pages as ESP ciphertext. The AES-GCM keystream byte at counter block position 2, byte 0 is XORed directly into the cached file page. By selecting the IV nonce to produce a desired keystream byte, any target byte in the file can be set to any value — one byte per trigger invocation.
The exploit builds a 256-entry lookup table mapping each possible keystream byte to its corresponding nonce, then iterates over a payload, firing the splice/ULP race for each byte that needs changing. It writes a small position-independent ELF stub (setresuid/setresgid/execve /bin/sh) over the first 192 bytes of /usr/bin/su in the page cache, then calls execve("/usr/bin/su") to obtain a root shell. The page cache modification is not backed to disk; the on-disk binary is untouched.
Other sources
In the Linux kernel, the following vulnerability has been resolved:
net: skbuff: preserve shared-frag marker during coalescing
skbtrycoalesce() can attach paged frags from @from to @to. If @from has SKBFLSHAREDFRAG set, the resulting @to skb can contain the same externally-owned or page-cache-backed frags, but the shared-frag marker is currently lost.
That breaks the invariant relied on by later in-place writers. In particular, ESP input checks skbhassharedfrag() before deciding whether an uncloned nonlinear skb can skip skbcowdata(). If TCP receive coalescing has moved shared frags into an unmarked skb, ESP can see skbhassharedfrag() as false and decrypt in place over page-cache backed frags.
Propagate SKBFLSHAREDFRAG when skbtrycoalesce() transfers paged frags. The tailroom copy path does not need the marker because it copies bytes into @to's linear data rather than transferring frag descriptors.
— NVD
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
debian/linuxto a version that resolves this vulnerability.Fixed in 5.10.257-1Fixed in 6.1.174-1Fixed in 6.12.90-2Fixed in 7.0.12-2 - Upgrade
Upgrade
debian/linux-6.1to a version that resolves this vulnerability.Fixed in 6.1.174-1~deb11u1 - Upgrade
Upgrade to a fixed release to a version that resolves this vulnerability.
Fixed in 6.6.141.1-1 - Upgrade
Upgrade
Linux kernelto a version that resolves this vulnerability.Patch net: skbuff: preserve shared-frag marker during coalescing
Event History
Frequently Asked Questions
What is the severity of CVE-2026-46300?
The severity of CVE-2026-46300 is rated as high with a score of 7.
What systems are affected by CVE-2026-46300?
CVE-2026-46300 affects the Linux kernel.
How do I fix CVE-2026-46300?
To fix CVE-2026-46300, apply the latest security patches provided for the Linux kernel.
What type of vulnerability is CVE-2026-46300?
CVE-2026-46300 is categorized as a race condition vulnerability.
What is the potential impact of CVE-2026-46300?
The potential impact of CVE-2026-46300 is local privilege escalation to root privileges.