Get a Demo

Let's Patch It!

Book a short call with one our specialists, we'll walk you through how Endor Patches work, and ask you a few questions about your environment (like your primary programming languages and repository management). We'll also send you an email right after you fill out the form, feel free to reply with any questions you have in advance!

CVE

CVE-2026-74612

veth: fix skb length accounting after XDP frag adjustment
Back to all
CVE

CVE-2026-74612

veth: fix skb length accounting after XDP frag adjustment

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

veth: fix skb length accounting after XDP frag adjustment

veth exposes non-linear skb fragments through an xdp_buff. If an XDP

program adjusts the fragment area, vethxdprcv_skb() copies

xdpfragssize back to skb->data_len but leaves skb->len containing the

old fragment contribution.

After a fragment shrink, this makes skb_headlen() larger than the actual

linear area. In the reproduced UDP receive path, _skbdatagram_iter()

copied 1024 bytes past the actual linear tail to userspace, starting at

struct skbsharedinfo. The copied bytes included the affected skb's

nrfrags, xdpfrags_size, and a kernel pointer from

skb_shinfo(skb)->frags[0]. Real packet data was displaced by the same

amount and truncated at the end.

Subtract the old datalen before replacing it and add the new datalen

afterwards, keeping skb->len and skb->data_len synchronized.

Additionally, bpfxdppulldata() can advance dataend while leaving

frags present. The skb is then still non-linear, so the old

_skbput(skb, off) triggers SKBLINEARASSERT().

Use skbsettail_pointer() and update skb->len explicitly instead,

following bpfprogrungenericxdp(). Unlike _skbput(),

skbsettail_pointer() does not require a linear skb.

A 60000-byte UDP datagram on a veth pair with MTU 64000 was shortened by

1024 bytes from its fragment area. Before the fix, all 10 runs produced

corrupted payloads. After the fix, all 10 runs matched the expected

payload exactly. A forced-tailroom reproducer also exercises

bpfxdppull_data() with frags still present; the old code triggers

SKBLINEARASSERT(), while this fix passes 10/10 runs.

Package Versions Affected

Package Version
patch Availability
No items found.

Automatically patch vulnerabilities without upgrading

Fix Without Upgrading
Detect compatible fix
Apply safe remediation
Fix with a single pull request

CVSS Version

Severity
Base Score
CVSS Version
Score Vector
C
H
U
10
-
3.1
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
C
H
U
0
-
3.1
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
C
H
U
-

Related Resources

No items found.

References

https://git.kernel.org/stable/c/0c3024afabb8064b141f3cedcb1ddd6ab05ad9d5, https://git.kernel.org/stable/c/2f2a7f3f8b9f1bffc9b0488aa02b6951b2aec139, https://git.kernel.org/stable/c/3205b0652a37255dbb7ca8f3d942c8d8aa677c21, https://git.kernel.org/stable/c/41b96667d42b74bb4b137f1bb78b611a953c5943, https://git.kernel.org/stable/c/cb6379feaaff11c4e1e79c26c745ffa23182768a, https://git.kernel.org/stable/c/cdf745b7a777f87f51666e5d8f4c6fc279bcf54d, https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/74xxx/CVE-2026-74612.json, https://nvd.nist.gov/vuln/detail/CVE-2026-74612, https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

Severity

10

CVSS Score
0
10

Basic Information

Base CVSS
10
EPSS Probability
0.00721%
EPSS Percentile
0.52097%
Introduced Version
718a18a0c8a67f97781e40bdef7cdd055c430996,5.18.0,6.2.0,6.7.0,6.13.0,6.19.0,0
Fix Available
cb6379feaaff11c4e1e79c26c745ffa23182768a,6.1.184,6.6.152,6.12.104,6.18.45,7.1.9,6.1.187-1,6.12.107-1~deb12u1,6.12.105-1,0:6.12.0-206.104.3.3.el10uek,0:6.12.0-206.104.3.3.el9uek,1:6.1.186-228.374.amzn2023,1:1.0-0.amzn2023,1:6.18.48-107.148.amzn2023

Fix Critical Vulnerabilities Instantly

Secure your app without upgrading.
Fix Without Upgrading