HIGH
ipv6 LwtunnelXmit UAF
CVE-2026-80792
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
01Description
In the Linux kernel, the following vulnerability has been resolved: ipv6: fix use-after-free in ip6_finish_output2() ip6_finish_output2() caches a pointer to the IPv6 destination address (daddr) before invoking lwtunnel_xmit(). The LWT-BPF transmit path or other encapsulation operations within lwtunnel_xmit() can reallocate the skb head, freeing the memory that daddr points to. When lwtunnel_xmit() returns LWTUNNEL_XMIT_CONTINUE, the function continues to use the stale daddr pointer to compute the nexthop and to look up or create the neighbour entry. This results in a use-after-free read, which can leak sensitive kernel data, pollute the neighbour table with arbitrary values, misdirect traffic, or crash the system. Fix this by re-fetching the IPv6 header and the destination address pointer after lwtunnel_xmit() returns LWTUNNEL_XMIT_CONTINUE, ensuring that the subsequent nexthop computation and neighbour lookup operate on valid memory.
02KernelScan AI Analysis
Risk summary
A use-after-free read in the IPv6 output path allows a local attacker to leak kernel memory, corrupt the neighbour table, misdirect network traffic, or crash the system. The bug is reachable by any local process that can send IPv6 traffic through a route configured with a lightweight tunnel (lwtunnel) encap, which an unprivileged user can set up inside a user network namespace. Products with IPv6 enabled and unprivileged user-namespace access are most exposed.
Vulnerability analysis
When the IPv6 output path sends a packet through a lightweight tunnel, it caches a pointer to the destination address in the IPv6 header before calling the tunnel transmit function. The tunnel transmit path (LWT-BPF or other encapsulation) can reallocate the packet buffer to add encapsulation headers, freeing the memory the cached pointer references. After the tunnel function signals that the packet should continue through normal output processing, the code still uses the stale pointer to compute the next hop and look up the neighbour entry, resulting in a use-after-free read. The fix re-reads the IPv6 header pointer from the potentially reallocated packet after the tunnel transmit function returns, so all subsequent next-hop and neighbour operations reference valid memory. An unprivileged local user can trigger this by creating a user network namespace where they hold CAP_NET_ADMIN, configuring a lightweight tunnel route, and sending IPv6 traffic through it; the stale read can disclose kernel data, corrupt the neighbour cache, or panic the kernel.
Lifecycle
03Fix Versions
| Branch | Introduced | Fixed in | Patch commit |
|---|---|---|---|
| 5.10 | 5.10.233 | 5.10.267 | 75e0a544ebe9 |
| 5.15 | — | 5.15.218 | d960881b9312 |
| 5.4 | 5.4.289 | 5.5 | c95f01b78266 |
| 6.1 | — | 6.1.185 | 087ee0d914aa |
| 6.12 | — | 6.12.106 | 3dc98e5fe82d |
| 6.18 | — | 6.18.47 | 99219c82804f |
| 6.6 | — | 6.6.154 | 3c770ac4e6f0 |
| 7.1 | — | 7.1.11 | 73a187384a8c |
| 7.2 | — | 7.2.1 | d0d48d999b0e |
| mainline | — | 7.3 | — |
| cip/5.10 | — | 5.10.268-cip77 | 75e0a544ebe9 |
| cip/5.10-rt | — | 5.10.268-cip77-rt34 | 75e0a544ebe9 |
| cip/6.1 | — | 6.1.187-cip60 | d960881b9312 |
| cip/6.1-rt | — | 6.1.189-cip61-rt32 | d960881b9312 |
| cip/6.12 | — | 6.12.108-cip31 | 3c770ac4e6f0 |
04CIP Kernels
State of the newest release of each Civil Infrastructure Platform SLTS tree, from CIP's own fix records.
| CIP tree | State |
|---|---|
| cip/6.12 | Fixed in 6.12.108-cip31 |
| cip/6.1 | Fixed in 6.1.187-cip60 |
| cip/6.1-rt | Fixed in 6.1.189-cip61-rt32 |
| cip/5.10 | Fixed in 5.10.268-cip77 |
| cip/5.10-rt | Fixed in 5.10.268-cip77-rt34 |