Severity by source
AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
Reachable only via a privileged fragment-adjusting XDP program on veth (PR:H) under specific packet/timing conditions (AC:H); yields kernel-memory leak (C:H) and assertion crash (A:H), minor data corruption (I:L).
Primary rating from Vendor (Linux).
CVSS VectorVendor: Linux
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
Lifecycle Timeline
5DescriptionCVE.org
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, veth_xdp_rcv_skb() copies xdp_frags_size 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, __skb_datagram_iter() copied 1024 bytes past the actual linear tail to userspace, starting at struct skb_shared_info. The copied bytes included the affected skb's nr_frags, xdp_frags_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 data_len before replacing it and add the new data_len afterwards, keeping skb->len and skb->data_len synchronized.
Additionally, bpf_xdp_pull_data() can advance data_end while leaving frags present. The skb is then still non-linear, so the old __skb_put(skb, off) triggers SKB_LINEAR_ASSERT().
Use skb_set_tail_pointer() and update skb->len explicitly instead, following bpf_prog_run_generic_xdp(). Unlike __skb_put(), skb_set_tail_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 bpf_xdp_pull_data() with frags still present; the old code triggers SKB_LINEAR_ASSERT(), while this fix passes 10/10 runs.
AnalysisAI
Kernel memory disclosure and crash in the Linux kernel's veth driver arises from broken skb length accounting after an XDP program adjusts packet fragments; veth_xdp_rcv_skb() updates skb->data_len but leaves skb->len holding the stale fragment contribution, so skb_headlen() overstates the linear area. On the UDP receive path this caused __skb_datagram_iter() to copy 1024 bytes past the real linear tail into userspace - leaking skb_shared_info contents including nr_frags, xdp_frags_size, and a kernel pointer from frags[0] - while displacing and truncating real packet data. …
Unlock full vulnerability intelligence
- Risk assessment & exploitation conditions
- Attack chain visualization
- Remediation with exact patch versions
- Threat intelligence from 22 sources
- Personal watchlist & email alerts
Free forever · No credit card required
Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata
Vulnerability AssessmentAI
| Exploitation | Exploitation requires an XDP program attached to a veth interface that adjusts (shrinks or grows) the skb fragment area - this is the exact prerequisite stated in the description ('If an XDP program adjusts the fragment area'). … Additional conditions and limiting factors are described in the full assessment. |
| Risk Assessment | The input CVSS of 10.0 (AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H) is an auto-generated maximal score typical of Linux stable-tree 'vulnerability has been resolved' CVEs and substantially overstates real-world risk. … Full risk analysis with EPSS, KEV, and SSVC signal comparison available after sign-in. |
| Exploit Scenario | An operator (or an attacker who has already gained the privileges needed to load BPF) attaches an XDP program that shrinks packet fragments to a veth interface used by containers or VMs; when a large multi-fragment UDP datagram traverses the pair, the receiving userspace process reads 1024 bytes of adjacent kernel memory - including a kernel pointer - leaking data useful to defeat KASLR, or the crafted path trips SKB_LINEAR_ASSERT() and panics the host. No public POC is referenced, though the commit message documents a reliable 10/10 reproducer, so weaponization is plausible for a capable attacker with the required XDP configuration in place. |
| Remediation | Apply the vendor patch by upgrading to a fixed stable kernel: 6.6.152, 6.12.104, 6.18.45, 7.1.9, or 7.2 or later, matching your maintenance branch (Vendor-released patch confirmed by the git.kernel.org stable commits and EUVD version data). … Detailed patch versions, workarounds, and compensating controls in full report. |
Recommended ActionAI
Within 24 hours, identify Linux systems with veth driver usage and inventory which have XDP programs active in your environment. …
Sign in for detailed remediation steps and compensating controls.
Threat intelligence, references, and detailed analysis are available after sign-in.
Same technique Information Disclosure
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-64549
GHSA-pg5f-gw23-248r