Look up another CVE · open CVE-2026-68302 in the interactive tracker
CVE-2026-68302
amt: re-read skb header pointers after every pull
Published 2026-08-10 (2 months ago) by the Linux kernel CNA. Subsystem drivers/net. Debian urgency: not yet assigned.
Debian does not build this code. The per-release build detail is under "Where it lives" below.
What to do, per Debian release
Debian's own status for CVE-2026-68302 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-4777-1 · 2026-09-08 · text | 6.1.187-1 | Update the kernel and reboot. DLA-4777-1 shipped the fix on 2026-09-08, in 6.1.187-1. A running kernel keeps the old code until the machine restarts. |
| Debian 13trixie | fixed | 6.12.101-1 | Update the kernel and reboot. Fixed in 6.12.101-1. A running kernel keeps the old code until the machine restarts. |
| Debian 14forky | fixed | 7.1.6-1 | Update the kernel and reboot. Fixed in 7.1.6-1. A running kernel keeps the old code until the machine restarts. |
| Debian unstablesid | fixed | 7.1.6-1 | Update the kernel and reboot. Fixed in 7.1.6-1. A running kernel keeps the old code until the machine restarts. |
| Debian 12bookworm · linux-6.12 | fixedDLA-4745-1 · 2026-08-18 · text | 6.12.101-1~deb12u1 | Update the kernel and reboot. DLA-4745-1 shipped the fix on 2026-08-18, in 6.12.101-1~deb12u1. A running kernel keeps the old code until the machine restarts. |
The vulnerability
What the bug is
Several AMT receive and transmit paths cache a pointer into the skb head (ip_hdr(), ipv6_hdr(), eth_hdr() or the AMT message header) and then call a helper that can reallocate that head before the cached pointer is used again. pskb_may_pull(), ip_mc_may_pull(), ipv6_mc_may_pull(), iptunnel_pull_header(), ip_mc_check_igmp() and ipv6_mc_check_mld() can all free the old head and move the data, so a pointer taken before the call dangles afterwards and the later access is a use-after-free of the freed head. The affected sites are: amt_rcv() caches ip_hdr() before amt_parse_type() pulls, then reads iph->saddr. amt_dev_xmit() caches ip_hdr()/ipv6_hdr() before ip_mc_check_igmp()/ ipv6_mc_check_mld() and pskb_may_pull(), then reads the group address. amt_multicast_data_handler() caches eth_hdr() before pskb_may_pull(), then writes the L2 header. amt_membership_query_handler() caches the AMT header, the outer and inner eth_hdr() and ip_hdr() before iptunnel_pull_header() and several pulls, then reads and writes them. amt_igmpv3_report_handler() and amt_mldv2_report_handler() cache ip_hdr()/ipv6_hdr() and the current group record and read the record count from the report header inside the record loop, across the *_mc_may_pull() calls. amt_update_handler() caches ip_hdr() and the AMT membership-update header before pskb_may_pull(), iptunnel_pull_header(), ip_mc_check_igmp() and the report handler, then reads iph->daddr and amtmu->nonce / amtmu->response_mac. Fix each site by either snapshotting the scalar that is used after the pull before the first pull runs, or re-deriving the header pointer from the skb after the last pull that can move the head. Values that are stable across the pull (source and group address, the response MAC and nonce, the record count, the outer source MAC) are snapshotted; pointers that are written through or read repeatedly are re-derived.
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.
drivers/net/amt.c
- What this is
- AMT (Automatic Multicast Tunneling)MAINTAINERS section matched on drivers/net/amt.c · netdev@vger.kernel.org · Maintained
- Kernel module
- none to look for. The file would have gone into amt, and Debian does not compile it into that module, so finding amt in lsmod would say nothing about this CVE.
Check it on the machine
grep -w CONFIG_AMT /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 does not build this code. In 5 releases below, every kernel flavour Debian publishes has the switch off, so the vulnerable file is compiled into no kernel binary Debian ships.
- bookworm, trixie, forky, sid, bookworm · linux-6.12n
- n
- not enabled on any flavour - this release does not build the code
- Build switch
- CONFIG_AMT
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-08-10 (2 months 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.48%, higher than 39.8% of all CVEssource
- CISA KEV
- not listedthe KEV catalogue
- Debian urgency
- not yet assignedsource
- Subsystem
- drivers/net
Upstream fixes
The versions the CNA records as introducing and fixing this, and the commit for each. source
| Introduced | Fixed in | Commit |
|---|---|---|
| 5.16 | 6.1.183 | 37ff890f9c18 |
| 5.16 | 6.6.148 | 9005b221cb1f |
| 5.16 | 6.12.101 | 7746d588d42a |
| 5.16 | 6.18.42 | ca0e8b661957 |
| 5.16 | 7.1.6 | 7f48e3ddad8e |
| 5.16 | 7.2 | 3656a79f94c4 |
Debian advisories
| Advisory | Date | Shipped to | Debian |
|---|---|---|---|
| DLA-4777-1 | 2026-09-08 | bookworm 6.1.187-1 | tracker |
| DLA-4745-1 | 2026-08-18 | bookworm 6.12.101-1~deb12u1 | 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
- AMT is a routable UDP tunnel (port 2268); all affected handlers run from amt_rcv(), the UDP encap receive callback, on packets from arbitrary remote hosts across the internet. No same-segment requirement exists.
- AC:LAttack complexity, low
- The attacker chooses the packet sizes and fragmentation that make the skb non-linear or cloned, so the pskb_may_pull()/iptunnel_pull_header()/ip_mc_check_igmp() calls deterministically reallocate the skb head and strand the cached pointers; no race or uncontrollable state is involved.
- PR:NPrivileges required, none
- AMT has no authentication: amt_request_handler() creates a tunnel for any source IP and returns the nonce/response MAC to the sender, so an unauthenticated remote host can complete the handshake and then reach the vulnerable update/report paths; gateway paths need only a spoofed relay source address.
- UI:NUser interaction, none
- Exploitation is entirely driven by inbound UDP packets processed in softirq context; no local user action or interaction is required on the target relay or gateway.
- S:UScope, unchanged
- The use-after-free corrupts kernel heap memory within the same kernel security authority; no VM, IOMMU, or sandbox boundary is crossed.
- C:HConfidentiality impact, high
- Stale header pointers are read after the head is freed, so freed heap contents are consumed as source/group addresses and record counts, and are copied into the destination MAC of frames delivered up the stack, leaking reallocated kernel memory to the attacker; UAF reads generally enable broader disclosure.
- I:HIntegrity impact, high
- amt_multicast_data_handler() and amt_membership_query_handler() write through the dangling pointers (eth->h_proto, ip_eth_mc_map()/ipv6_eth_mc_map() into eth->h_dest, ether_addr_copy of h_source), giving an attacker-influenced heap write into freed and likely reallocated memory, a classic control-flow hijack primitive.
- A:HAvailability impact, high
- Use-after-free reads and writes on a freed skb head corrupt the slab and readily cause KASAN splats, oopses, or kernel panic, and the packets triggering it can be sent repeatedly by an unauthenticated remote attacker.