Linux kernel skb_zerocopy flaw allows local privilege escalation
ZDI rates CVE-2026-99284 at CVSS 7.8; an attacker needs low-privileged code execution first.
Local privilege escalation in Linux kernel skb_zerocopy
skb_zerocopy() in the Linux kernel copies fragment descriptors without copying the shared-frag marker, so a destination skb falsely reports that its page-cache-backed frags are not shared. ESP input then decrypts in place instead of copying the data. An unprivileged local user can write into the page cache of a root-owned read-only file when the skb was built for nfnetlink_queue or an Open vSwitch upcall. Linux has not listed affected builds.
What to do: Apply the Linux kernel update for CVE-2026-99284 that propagates SKBFL_SHARED_FRAG in skb_zerocopy(). No fixed version or workaround is stated.
| Product | Affected |
|---|---|
| Linux kernel | — |
Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.
In the Linux kernel, the following vulnerability has been resolved: net: skbuff: propagate shared-frag marker in skb_zerocopy() skb_zerocopy() moves frag descriptors from @from into @to and takes a reference on each frag, but it does not copy skb_shinfo(from)->flags into skb_shinfo(to)->flags. A destination skb holding the same page-cache backed frags as the source therefore reports skb_has_shared_frag() as false. That breaks the invariant relied on by later in-place writers. ESP input checks skb_has_shared_frag() before deciding whether an uncloned nonlinear skb can skip skb_cow_data(); with the marker lost, an skb that skb_zerocopy() built for nfnetlink_queue or for an openvswitch upcall is decrypted in place, letting an unprivileged user write into the page cache of a root-owned read-only file. Propagate SKBFL_SHARED_FRAG when frag descriptors are copied, as done for the other frag-transfer helpers.
ZDI rates CVE-2026-99284 at CVSS 7.8; an attacker needs low-privileged code execution first.
Today 1.2K readers · 1.4K views · 298 reads · all time 195K views