CVE-2026-98368

CVE-2026-98368

High · published October 6, 2026

CVSS v3.1
7.8
EPSS
0%
Percentile
2.1
In the wild
Unconfirmed
What it is

In the Linux kernel, the following vulnerability has been resolved:

esp: downgrade zerocopy managed frags before mutating skb frags

On the out-of-place output path (esp->inplace == false) ESP rewrites the

skb frag array: esp_output_head() appends a trailer frag and

esp_output_tail() replaces the frags with a destination page, both

referenced with get_page().

When the skb carries zerocopy managed frags (SKBFL_MANAGED_FRAG_REFS) the

payload frags are owned by the ubuf and must not be referenced or

unreferenced individually, but ESP mutates the frag array without ever

downgrading the skb. This breaks the managed-frag invariant two ways:

- esp_ssg_unref() walks the source scatterlist and drops a page

reference for every frag, including the ubuf-owned payload frags,

pushing their refcount below the GUP pin bias while the pages are

still pinned, i.e. a use-after-free of the zerocopy pages;

- esp_output_tail() installs its destination page as frag 0 with

get_page() but leaves SKBFL_MANAGED_FRAG_REFS set, so

skb_release_data() takes the skip_unref branch and never drops that

reference, leaking the x->xfrag page at packet rate.

Fix this the way every other frag-mutating site does (__ip_append_data(),

__ip6_append_data(), tcp_sendmsg_locked()) and call

skb_zcopy_downgrade_managed() before ESP touches the frag array: it takes

a real reference on each existing frag and clears SKBFL_MANAGED_FRAG_REFS,

so the per-frag unref in esp_ssg_unref() and the frag release in

skb_release_data() are both balanced and no mixed-ownership frag array is

left behind.

The record
Technical detail
CVSS v3.1
7.8 · HIGH
Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
CVSS v4.0
Not supplied
EPSS
0.00126 · 2.1th percentile
Published
2026-10-06T13:18Z
References (6)
EPSS history
Timeline
  • 07 OCT 03:43Z
    EPSS moved — → 0%
    epss
  • 06 OCT 08:46Z
    esp: downgrade zerocopy managed frags before mutating skb frags
    cvelistv5