CVE-2026-80976

CVE-2026-80976

Critical · published September 12, 2026

CVSS v3.1
9.8
EPSS
1%
Percentile
53.1
In the wild
Unconfirmed
What it is

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.

The record
Technical detail
CVSS v3.1
9.8 · CRITICAL
Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CVSS v4.0
Not supplied
EPSS
0.00714 · 53.1th percentile
Published
2026-09-12T00:19Z
References (8)
EPSS history
Timeline
  • 13 SEP 03:23Z
    EPSS moved — → 0%
    epss
  • 11 SEP 19:42Z
    seg6: reset IP6CB after IPv6 decapsulation
    cvelistv5