data built 2026-10-19T13:16:53Z

Look up another CVE · open CVE-2026-64132 in the interactive tracker

CVE-2026-64132

ipv6: ioam: refresh hdr pointer before ioam6_event()

9.8 EPSS 0.5% AV:N

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

ReleaseStatus VersionWhat this means
Debian 12bookwormnot affected6.1.190-1Nothing to do. bookworm never shipped the vulnerable code.
Debian 13trixiefixed6.12.94-1Update the kernel and reboot. Fixed in 6.12.94-1. A running kernel keeps the old code until the machine restarts.
Debian 14forkyfixed7.0.12-1Update the kernel and reboot. Fixed in 7.0.12-1. A running kernel keeps the old code until the machine restarts.
Debian unstablesidfixed7.0.12-1Update 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

IntroducedFixed inCommit
6.96.12.92769723124b7c
6.96.18.3424de676da63c
6.97.0.115af905aa8e91
6.97.1e46e6bc97fb1

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.