CVE-2026-98096

ipv6: sr: restore network header before routing and forwarding

HIGH
7.4
CVSS Score
Published: September 25, 2026 at 10:24 AM UTC
Updated: October 28, 2026 at 06:58 PM UTC
1 product affected across 1 vendorLinux Kernel

Using Linux by Linux?

Get instant alerts when new vulnerabilities affect Linux - before attackers find them.

Real-time alertsTrack your software stackFree plan available
Severity
HIGH7.4
Exploit prediction
EPSS 0.5%

Description

In the Linux kernel, the following vulnerability has been resolved: ipv6: sr: restore network header before routing and forwarding ipv6_srh_rcv() runs with skb->data at the Segment Routing Header (SRH) while skb_network_header() points at the IPv6 header. When segments_left > 0, ipv6_srh_rcv() previously restored the skb->data position by pushing sizeof(struct ipv6hdr), assuming the SRH immediately followed the fixed IPv6 header. If another extension header (such as a Hop-by-Hop options header) precedes the SRH, skb_network_offset() remained negative. This led to two problems: 1. During ip6_route_input(), fib6_rules_early_flow_dissect() invokes __skb_flow_dissect() which passes the negative skb_network_offset() to flow dissection, breaking BPF and C flow dissector logic. 2. If forwarded via ip6_forward() or redirected via act_mirred, downstream handlers (like sch_fragment() or neighbour output) pass the negative offset as an unsigned length, triggering OOB memcpy or buffer overflows. Fix this by pushing -skb_network_offset(skb) before routing, ensuring skb_network_offset(skb) is 0 for route lookup / flow dissection as well as downstream forwarding. On the loopback path, pull skb_transport_offset(skb) to restore skb->data to the SRH before looping back.

Affected

Our own answer: ranges merged, affected separated from platform-only, with confidence and review flags.

4.10 ≤ v < 5.10.2715.11 ≤ v < 5.15.2226.0 ≤ v < 6.1.1896.13 ≤ v < 6.18.536.19 ≤ v < 7.2.76.2 ≤ v < 6.6.1586.7 ≤ v < 6.12.1111ababeba4a21f3dba3da3523c670b207fb2feb624.107.3
Vendor states this is fixed in 3ad7dca5e03bd64c65983a19734337512fd75491 (fixed)
Vendor states this is fixed in 8f44d4160bcdb3136a9145a4b9c7816382976925 (fixed)
Vendor states this is fixed in 975b5b067f525a1b1338c4a3bee1c46545801518 (fixed)
Vendor states this is fixed in 97b21ef57dfabbff660a4672c9fef7edfb720f47 (fixed)
Vendor states this is fixed in 9cfbe2c381ab6d00a08e7a5b6028865adfb4e1bc (fixed)
Vendor states this is fixed in af08f62b5a5a446d6134a92d86771d3d12e0e3da (fixed)
Vendor states this is fixed in ce4c8beedc19aceeab0e7bdc6f34394fb158c47c (fixed)
Vendor states this is fixed in f463c4786cf27376de7dfc0833a12e924a98f698 (fixed)
Vendor states this is fixed in 4.10 (unaffected)
Vendor states this is fixed in 5.10.271 (unaffected)
Vendor states this is fixed in 5.15.222 (unaffected)
Vendor states this is fixed in 6.1.189 (unaffected)
Vendor states this is fixed in 6.12.111 (unaffected)
Vendor states this is fixed in 6.18.53 (unaffected)
Vendor states this is fixed in 6.6.158 (unaffected)
Vendor states this is fixed in 7.2.7 (unaffected)
Vendor states this is fixed in 7.3 (unaffected)
Vendor states this is fixed in 7.3-rc2 (unaffected)

CVSS

7.4HIGHLinux
Vector?

Quick Info

StatusANALYZED
CWE
CWE-787

Get alerted

Stop reading CVE feeds looking for your own stack

Track the products you run and VulnTracker tells you when a new CVE affects them — with what is known about fixing it, and nothing about the rest.

Free plan, no card