CVE-2026-98368
esp: downgrade zerocopy managed frags before mutating skb frags
No known exploitation. EPSS puts it in the 2nd percentile. Fixed versions are out.
What to do
Find your product and version, then upgrade to the build on the right.
- LinuxAffected: ≥ 753f1ca4e1e50248a1b760c9774d6d6b354562cc, < 2359264f377cdbdef2d95868cc8fb572949e48d3Upgrade to: 2359264f377cdbdef2d95868cc8fb572949e48d3Affected: ≥ 753f1ca4e1e50248a1b760c9774d6d6b354562cc, < 69a768c12398cada8528080332c822623fa7064dUpgrade to: 69a768c12398cada8528080332c822623fa7064dAffected: ≥ 753f1ca4e1e50248a1b760c9774d6d6b354562cc, < 6508304ac2c8cdafca2f4ab915df8c707893e134Upgrade to: 6508304ac2c8cdafca2f4ab915df8c707893e134Affected: ≥ 753f1ca4e1e50248a1b760c9774d6d6b354562cc, < 6cab554f2c0f28773f712ed3a5479103f42ce844Upgrade to: 6cab554f2c0f28773f712ed3a5479103f42ce844 + 2 more branchesStated by: CVE record
Versions as the sources state them. Full version matrix after sign-in
What it is
From the CVE record
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.
In plain language
No plain-language summary for this CVE yet.
Exploitation
Where each signal puts this CVE on the scale from published to confirmed exploited.
- CISA KEV
Not in the catalog. CISA has not confirmed exploitation.
- Public exploits
No public exploit or proof of concept found in the sources we track.
- EPSS
0.1% chance of exploitation activity in the next 30 days, which ranks it in the 2nd percentile of scored CVEs.
Exploit Prediction Scoring System, FIRST.org. A probability, not a confirmation.
Lifecycle
3 events over 1 day, from the signal feeds we watch.
- Record updated
- Publishedrecord updated
Affected products
Technical detail
CVSS 3.1 vector
Open in the CVSS calculatorCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Scored 7.8 by NVD.
How it is reached
- Attack Vector LocalRequires local access to the vulnerable system (e.g. local login, malicious file)
- Attack Complexity LowNo special conditions — the attack can be reliably reproduced
- Privileges Required LowRequires basic user-level privileges
- User Interaction NoneNo user interaction needed — fully automated exploitation
Scope
- Scope UnchangedImpact is limited to the vulnerable component itself
Impact if exploited
- Confidentiality HighTotal information disclosure — all data in the component is compromised
- Integrity HighTotal loss of integrity — attacker can modify any data in the component
- Availability HighTotal denial of service — the component is completely unavailable
Sources
References in the record
- git.kernel.org/stable/c/0d0845ee61c5df47cc68bc446501f48f71e8dcc6
- git.kernel.org/stable/c/2359264f377cdbdef2d95868cc8fb572949e48d3
- git.kernel.org/stable/c/6508304ac2c8cdafca2f4ab915df8c707893e134
And 3 more references. See all after sign-in
In the news
Watch the software you run.
My Stack ranks new CVEs for your products by real-world exploitation, so the next serious one reaches you without reading every advisory.
We'll flag the next CVE, public exploit or patch for Linux, not every advisory.
A free account adds
- The full version matrix and every affected product
- Exploit links, proofs of concept and Metasploit modules
- Email alerts for the products you watch
- The same data over REST API, MCP and CLI