CVE Catalog

CVE-2026-98570

Low risk· EPSS 8%
Published: Updated: Translated: NVD NIST

Exploitation Probability (EPSS)

Low risk
0.19%

8th percentile - higher than 8% of all known CVEs

Summary

In the Linux kernel, the seg6, ioam6 and rpl lwtunnels sized their skb_cow_head() request as the length of new headers plus dst_dev_overhead(), then rebuilt the MAC header via skb_mac_header_rebuild(). When the MAC header was longer than the reserved space (e.g., on ingress through a VLAN device with reorder_hdr off), the rebuild computed a negative offset and wrote about 64 KB past skb->head.

Risk Assessment

An out-of-bounds write when forwarding IPv6 traffic through tunnels can lead to kernel memory corruption, system crash, or potential code execution.

Recommendation

Update the Linux kernel to a version where dst_dev_overhead() returns the larger of the two values, ensuring room for the MAC header.

Other vulnerabilities in Linux kernel

See all
Original NVD description (English source)

In the Linux kernel, the following vulnerability has been resolved: net: ipv6: keep room for the mac header in dst_dev_overhead() The seg6, ioam6 and rpl lwtunnels size their skb_cow_head() request as the length they are about to push plus dst_dev_overhead(), then push the new headers and rebuild the mac header below them with skb_mac_header_rebuild(). That rebuild needs skb->mac_len of headroom, but dst_dev_overhead() leaves LL_RESERVED_SPACE() of the egress device, 16 bytes for plain Ethernet. Where the mac header is longer than that, as it is on ingress through a VLAN device with reorder_hdr off, the rebuild runs out of room: skb_set_mac_header(skb, -skb->mac_len) computes a negative offset, stores it unchecked in the u16 skb->mac_header, and the memmove that follows writes skb->mac_len bytes about 64 KB past skb->head. Forwarding plain ping6 traffic through such a device reproduces it on all five seg6 encapsulation modes and on the rpl and ioam6 inline paths; skb->mac_header comes back as 65534 on a 704-byte head. Return the larger of the two. The helper already returns skb->mac_len when it has no dst, so this only makes the other branch agree, and it covers every caller rather than each call site in turn.

Vulnerability data from NVD (NIST) · CISA KEV · EPSS