PT-2026-90106 · Linux · Linux

CVE-2026-80976

·

Published

2026-09-11

·

Updated

2026-09-11

None

No severity ratings or metrics are available. When they are, we'll update the corresponding info on the page.
In the Linux kernel, the following vulnerability has been resolved:
seg6: reset IP6CB after IPv6 decapsulation
decap and validate() pulls the outer SRv6 headers and makes the inner packet the skb network header. The IPv6 control block still contains values collected while parsing the outer packet, including nhoff and extension-header flags.
End.DX6 and End.DT6 route the inner IPv6 packet directly to the IPv6 input path. An unprivileged user can reach End.DT6 from a user and net namespace by installing a local SID and injecting an outer packet with Hop-by-Hop and Destination Options headers followed by an SRH and a minimal inner IPv6 packet.
The outer extension headers leave a large nhoff in IP6CB. After decapsulation, ip6 protocol deliver rcu() uses that stale offset on the inner packet and reads beyond the skb head. KASAN reports:
BUG: KASAN: slab-out-of-bounds in ip6 protocol deliver rcu ip6 protocol deliver rcu+0x1118/0x1450 ip6 input finish+0x11b/0x240 seg6 local input core+0xed/0x2e0 lwtunnel input+0x1e9/0x4e0 ipv6 rthdr rcv+0x525f/0x6c50 ip6 protocol deliver rcu+0xcb7/0x1450
Before clearing IP6CB for an inner IPv6 packet, save its incoming interface index and L3 slave state. Restore both after the clear and set nhoff to the inner IPv6 base-header nexthdr field.
Use IP6CB(skb)->iif rather than skb->skb iif because VRF processing can replace skb iif with the L3 master while IP6CB keeps the receiving interface. Preserve IP6SKB L3SLAVE for the same reason.
Found an issue in the description? Have something to add? Feel free to write us 👾

Related Identifiers

CVE-2026-80976

Affected Products

Linux