CVEvulnerability
CVE-2026-80976
9.8 CRITICAL
Official page ↗
- Status
- Received
- Published
- 2026-09-11
- Last modified
- 2026-10-19
- Assigner
- 416baaa9-dc9f-4396-8d5f-8c081fb06d67
- CVSS 3.1 (416baaa9-dc9f-4396-8d5f-8c081fb06d67)
- 9.8 CRITICAL — CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Description
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.
References
- https://git.kernel.org/stable/c/2b154e96fcb3f01fd42765c64e0a56820fbc16eb git.kernel.org
- https://git.kernel.org/stable/c/96c74420ac92930a7e0f21770818544eee4a93d7 git.kernel.org
- https://git.kernel.org/stable/c/9ae92198c24d7dacd4070e2f34f6e1ed3a63061c git.kernel.org
- https://git.kernel.org/stable/c/a0e2b0a3718f0cf9fb0ee41710b4a6348a7315c8 git.kernel.org
- https://git.kernel.org/stable/c/c73fb911e02b9a766c950bc9707f3e3a96ffd702 git.kernel.org
- https://git.kernel.org/stable/c/cfa186a0857a0f831dfca67b16bbc40ecfdf3280 git.kernel.org
- https://git.kernel.org/stable/c/d1f0d353358987ca87f21d8956e2d2854951130d git.kernel.org
- https://git.kernel.org/stable/c/f967455fb2a5a2079b9eb5823e9ccf359174bf9f git.kernel.org