Look up another CVE · open CVE-2026-80976 in the interactive tracker
CVE-2026-80976
seg6: reset IP6CB after IPv6 decapsulation
Published 2026-09-11 (37 days ago) by the Linux kernel CNA. Subsystem net/ipv6. Debian urgency: not yet assigned.
What to do, per Debian release
Debian's own status for CVE-2026-80976 in every release this site tracks, and what each one means in practice. Every status below is the one the Debian Security Team publishes for this CVE. source
| Release | Status | Version | What this means |
|---|---|---|---|
| Debian 12bookworm | fixedDLA-4841-1 · 2026-10-17 · text | 6.1.190-1 | Update the kernel and reboot. DLA-4841-1 shipped the fix on 2026-10-17, in 6.1.190-1. A running kernel keeps the old code until the machine restarts. |
| Debian 13trixie | fixedDSA-6528-1 · 2026-09-29 · text | 6.12.111-1 | Update the kernel and reboot. DSA-6528-1 shipped the fix on 2026-09-29, in 6.12.111-1. A running kernel keeps the old code until the machine restarts. |
| Debian 14forky | fixed | 7.2.6-1 | Update the kernel and reboot. Fixed in 7.2.6-1. A running kernel keeps the old code until the machine restarts. |
| Debian unstablesid | fixed | 7.2.6-1 | Update the kernel and reboot. Fixed in 7.2.6-1. A running kernel keeps the old code until the machine restarts. |
| Debian 12bookworm · linux-6.12 | fixedDLA-4817-1 · 2026-10-04 · text | 6.12.111-1~deb12u1 | Update the kernel and reboot. DLA-4817-1 shipped the fix on 2026-10-04, in 6.12.111-1~deb12u1. A running kernel keeps the old code until the machine restarts. |
The vulnerability
What the bug is
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.
Where it lives
The fix touches these files. If the subsystem is one you do not use, the practical exposure is lower, though the package is still the vulnerable one.
net/ipv6/seg6_local.c
- What this is
- NETWORKING [SRv6]MAINTAINERS section matched on net/ipv6/seg6* · netdev@vger.kernel.org · Maintained
Check it on the machine
grep -wE 'CONFIG_IPV6|CONFIG_IPV6_SEG6_LWTUNNEL' /boot/config-$(uname -r)Reads the booted kernel's own configuration, on the machine and nowhere else. =y is built in, =m is a module, and an is not set line means the code is not there.
Show whether Debian builds this, per release
Debian builds this code. Every release below compiles the affected file into the kernels it ships.
- bookworm, trixie, forky, sid, bookworm · linux-6.12y
- y
- built into the kernel image on every flavour - only a patch removes it
- Build switches
- CONFIG_IPV6, CONFIG_IPV6_SEG6_LWTUNNEL
- Reads as
- all on means the file is compiled; any one off means it is not.
From the configuration Debian publishes for every kernel flavour it builds. It covers only the architectures Debian ships a linux-config package for, and nothing about a kernel you built yourself. Debian's own status above stays authoritative about the source package.MAINTAINERS kbuild Makefiles Debian linux-config packages
Signals
- Published
- 2026-09-11 (37 days ago)source
- CVSS
- 9.8 critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:Hsource recompute it - Attack vector
- network (AV:N)source
- EPSS
- 0.71%, higher than 52.8% of all CVEssource
- CISA KEV
- not listedthe KEV catalogue
- Debian urgency
- not yet assignedsource
- Subsystem
- net/ipv6
Upstream fixes
The versions the CNA records as introducing and fixing this, and the commit for each. source
| Introduced | Fixed in | Commit |
|---|---|---|
| 4.14 | 5.10.270 | d1f0d3533589 |
| 4.14 | 5.15.221 | a0e2b0a3718f |
| 4.14 | 6.1.188 | 9ae92198c24d |
| 4.14 | 6.6.157 | 96c74420ac92 |
| 4.14 | 6.12.109 | 2b154e96fcb3 |
| 4.14 | 6.18.50 | cfa186a0857a |
| 4.14 | 7.2.4 | c73fb911e02b |
| 4.14 | 7.3 | f967455fb2a5 |
Debian advisories
| Advisory | Date | Shipped to | Debian |
|---|---|---|---|
| DLA-4841-1 | 2026-10-17 | bookworm 6.1.190-1 | tracker |
| DLA-4817-1 | 2026-10-04 | bookworm 6.12.111-1~deb12u1 | tracker |
| DSA-6528-1 | 2026-09-29 | trixie 6.12.111-1 | tracker |
Why the CNA scored it this way
Quoted from the kernel CNA's own scoring file, word for word. A highlighted metric carries the most severe value CVSS v3.1 defines for it, which is what pushes the score up. source
- AV:NAttack vector, network
- End.DT6/End.DX6 run on the IPv6 receive path (ipv6_rthdr_rcv/lwtunnel_input/seg6_local_input_core) when a packet targets a configured local SID; a remote attacker who can route IPv6/SRv6 traffic to that SID on an SRv6 PE, VPN edge, or similar node triggers decap without local access.
- AC:LAttack complexity, low
- The attacker fully controls the outer Hop-by-Hop and Destination Options chain that inflates IP6CB nhoff and the inner packet length, so one crafted packet deterministically makes ip6_protocol_deliver_rcu() index past the skb head with no race or uncontrolled layout.
- PR:NPrivileges required, none
- SID processing runs in receive softirq with no authentication; a configured End.DT6/End.DX6 SID is an environmental precondition, not a credential the network attacker must hold (the same path is also reachable by an unprivileged userns user installing a SID).
- UI:NUser interaction, none
- Exploitation requires only sending crafted IPv6 packets to the SID; no victim user or administrator action is needed beyond the pre-existing SRv6 configuration.
- S:UScope, unchanged
- The stale-nhoff out-of-bounds access affects kernel memory on the receiving host only; it does not cross a VM, IOMMU, or sandbox security boundary.
- C:HConfidentiality impact, high
- After decap, ip6_protocol_deliver_rcu() does skb_network_header(skb)[nhoff] using a stale outer nhoff the attacker can push thousands of bytes past the inner skb, which is an out-of-bounds kernel read; the leaked byte is then used as nexthdr, exposing further slab contents via dispatch side effects.
- I:HIntegrity impact, high
- Stale nhoff selects the inet6 protocol handler, type-confusing the inner packet into an attacker-influenced parser; IPv6 fragment reassembly also writes skb_network_header(skb)[nhoff], so the same attacker-controlled offset becomes an out-of-bounds write when the inner flow is fragmented.
- A:HAvailability impact, high
- KASAN reports slab-out-of-bounds in ip6_protocol_deliver_rcu() on this path; in production a large nhoff lands on unmapped memory and oopses/panics the kernel, and the packet can be repeated at line rate.