CVE-2026-64132: ipv6: ioam: refresh hdr pointer before ioam6_event()

Greg Kroah-Hartman <[email protected]>
Newsgroups org.kernel.vger.linux-cve-announce
Message-ID <2026071927-CVE-2026-64132-dd76@gregkh>
From: Greg Kroah-Hartman <[email protected]>

Description
===========

In the Linux kernel, the following vulnerability has been resolved:

ipv6: ioam: refresh hdr pointer before ioam6_event()

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.

The Linux kernel CVE team has assigned CVE-2026-64132 to this issue.


Affected and fixed versions
===========================

	Issue introduced in 6.9 with commit f655c78d6225f585ef60a9d93ffb79d507ff3ad3 and fixed in 6.12.92 with commit 769723124b7c3b2bfea4cf68ad292698b87c8d01
	Issue introduced in 6.9 with commit f655c78d6225f585ef60a9d93ffb79d507ff3ad3 and fixed in 6.18.34 with commit 24de676da63c1122d2c13b0d546238b66d1b4e62
	Issue introduced in 6.9 with commit f655c78d6225f585ef60a9d93ffb79d507ff3ad3 and fixed in 7.0.11 with commit 5af905aa8e91ff8d94572a1e089558f21dcf24ed
	Issue introduced in 6.9 with commit f655c78d6225f585ef60a9d93ffb79d507ff3ad3 and fixed in 7.1 with commit e46e6bc97fb1f339730ff1ba74267fbf48e7a422

Please see https://www.kernel.org for a full list of currently supported
kernel versions by the kernel community.

Unaffected versions might change over time as fixes are backported to
older supported kernel versions.  The official CVE entry at
	https://cve.org/CVERecord/?id=CVE-2026-64132
will be updated if fixes are backported, please check that for the most
up to date information about this issue.


Affected files
==============

The file(s) affected by this issue are:
	net/ipv6/exthdrs.c


Mitigation
==========

The Linux kernel CVE team recommends that you update to the latest
stable kernel version for this, and many other bugfixes.  Individual
changes are never tested alone, but rather are part of a larger kernel
release.  Cherry-picking individual commits is not recommended or
supported by the Linux kernel community at all.  If however, updating to
the latest release is impossible, the individual changes to resolve this
issue can be found at these commits:
	https://git.kernel.org/stable/c/769723124b7c3b2bfea4cf68ad292698b87c8d01
	https://git.kernel.org/stable/c/24de676da63c1122d2c13b0d546238b66d1b4e62
	https://git.kernel.org/stable/c/5af905aa8e91ff8d94572a1e089558f21dcf24ed
	https://git.kernel.org/stable/c/e46e6bc97fb1f339730ff1ba74267fbf48e7a422
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.