Look up another CVE · open CVE-2026-64132 in the interactive tracker
CVE-2026-64132
ipv6: ioam: refresh hdr pointer before ioam6_event()
Published 2026-07-19 (3 months ago) by the Linux kernel CNA. Subsystem net/ipv6. Debian urgency: unimportant.
What to do, per Debian release
Debian's own status for CVE-2026-64132 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 | not affected | 6.1.190-1 | Nothing to do. bookworm never shipped the vulnerable code. |
| Debian 13trixie | fixed | 6.12.94-1 | Update the kernel and reboot. Fixed in 6.12.94-1. A running kernel keeps the old code until the machine restarts. |
| Debian 14forky | fixed | 7.0.12-1 | Update the kernel and reboot. Fixed in 7.0.12-1. A running kernel keeps the old code until the machine restarts. |
| Debian unstablesid | fixed | 7.0.12-1 | Update the kernel and reboot. Fixed in 7.0.12-1. A running kernel keeps the old code until the machine restarts. |
The vulnerability
What the bug is
Reported by Sashiko: In ipv6_hop_ioam(), the hdr pointer is initialized to point into the skb's linear data buffer. Later, the code calls skb_ensure_writable(), which might reallocate the buffer: if (skb_ensure_writable(skb, optoff + 2 + hdr->opt_len)) goto drop; /* Trace pointer may have changed */ trace = (struct ioam6_trace_hdr *)(skb_network_header(skb) + optoff + sizeof(*hdr)); ioam6_fill_trace_data(skb, ns, trace, true); ioam6_event(IOAM6_EVENT_TRACE, dev_net(skb->dev), GFP_ATOMIC, (void *)trace, hdr->opt_len - 2); If the skb is cloned or lacks sufficient linear headroom, skb_ensure_writable() will invoke pskb_expand_head(), which reallocates the skb's data buffer and frees the old one, invalidating pointers to it. While the code recalculates the trace pointer immediately after the call to skb_ensure_writable(), it fails to recalculate the hdr pointer. This patch fixes the above by recalculating the hdr pointer before passing hdr->opt_len to ioam6_event(), so that we avoid any UaF.
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/exthdrs.c
- What this is
- NETWORKING [IPv4/IPv6]MAINTAINERS section matched on net/ipv6/exthdrs.c · netdev@vger.kernel.org · Maintained
Check it on the machine
grep -w CONFIG_IPV6 /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, sidy
- y
- built into the kernel image on every flavour - only a patch removes it
- Build switch
- CONFIG_IPV6
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-07-19 (3 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.49%, higher than 40.8% of all CVEssource
- CISA KEV
- not listedthe KEV catalogue
- Debian urgency
- unimportantsource
- 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 |
|---|---|---|
| 6.9 | 6.12.92 | 769723124b7c |
| 6.9 | 6.18.34 | 24de676da63c |
| 6.9 | 7.0.11 | 5af905aa8e91 |
| 6.9 | 7.1 | e46e6bc97fb1 |
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
- The bug is in `ipv6_hop_ioam()`, reached from `ipv6_rcv()` → `ip6_rcv_core()` → `ipv6_parse_hopopts()` → `ip6_parse_tlv()` when processing IPv6 hop-by-hop IOAM options on ingress. A remote attacker can deliver the trigger with a crafted IPv6 packet to any internet-facing or LAN-reachable host/router that has IOAM ingress enabled.
- AC:LAttack complexity, low
- Exploitation requires `skb_ensure_writable()` to reallocate via `pskb_expand_head()`, which occurs when the skb is cloned (e.g., bridge flooding/multicast forwarding sets `skb->cloned` on the original before local delivery to the IP stack). An attacker can reliably create this condition with concurrent traffic/topology choices rather than depending on uncontrollable timing or memory layout.
- PR:NPrivileges required, none
- The attacker needs no privileges on the victim system—only the ability to send IPv6 packets. IOAM namespace/sysctl configuration is a victim-side deployment prerequisite (typical on carrier/ISP telemetry nodes), not a privilege the attacker must hold.
- UI:NUser interaction, none
- Exploitation is fully attacker-driven by sending a malicious IPv6 packet and requires no action from a victim user.
- S:UScope, unchanged
- The vulnerability is a kernel heap use-after-free in IPv6 packet processing; successful exploitation would compromise the kernel/host itself, not cross a separate security authority such as a VM guest-to-host or sandbox boundary.
- C:HConfidentiality impact, high
- After `pskb_expand_head()` frees the old skb buffer, the stale `hdr` pointer is dereferenced for `hdr->opt_len`, constituting a use-after-free read of freed kernel memory; that attacker-influenced length is then used in `ioam6_event_put_trace()`/`nla_put()`, enabling out-of-bounds kernel memory reads and information disclosure.
- I:HIntegrity impact, high
- Use-after-free of heap metadata enables memory corruption primitives; the corrupted `opt_len` fed into netlink attribute construction can cause out-of-bounds reads whose contents are attacker-influenced, and UAF bugs in skb handling are classically leveragable toward arbitrary kernel write/code execution.
- A:HAvailability impact, high
- Reading freed memory and passing a corrupted length into `nla_put()` can cause kernel oops/panic (especially with KASAN/overflow checks), and UAF conditions inherently risk system crashes even when full exploitation is not attempted.