KernelScan.io

CRITICAL Introduced in 4.5

ila CsumAdjust UAF

CVE-2026-68127

CVSS 9.8 / 10.0 KernelScan AI

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

01

In the Linux kernel, the following vulnerability has been resolved: ila: reload IPv6 header after pskb_may_pull in checksum adjust ila_csum_adjust_transport() caches ip6h = ipv6_hdr(skb) before calling pskb_may_pull(). On a non-linear skb whose transport header sits in a page fragment, pskb_may_pull() can call __pskb_pull_tail() / pskb_expand_head() and free the old skb head, leaving ip6h dangling; the following get_csum_diff(ip6h, p) then reads freed memory. ila_update_ipv6_locator() uses ip6h (and the iaddr derived from it) again after the csum-adjust call and additionally writes the new locator through that pointer. Impact: a remote IPv6 packet routed through a configured ILA csum-adjust-transport route or receive-side mapping triggers a slab-use-after-free in ila_update_ipv6_locator() (KASAN). The route or mapping requires CAP_NET_ADMIN to configure, but trigger packets are unauthenticated once it exists. Reload ip6h after each pskb_may_pull() in ila_csum_adjust_transport() before the csum-diff read. In ila_update_ipv6_locator() only the ILA_CSUM_ADJUST_TRANSPORT case pulls the skb, so reload ip6h and iaddr in that case alone before the destination-address write; the neutral-map modes never pull and keep their cached pointers.

02

Engine v0.6.0

Risk summary

A remote attacker can trigger a use-after-free in the kernel's ILA subsystem by sending a crafted non-linear IPv6 packet through a device with an ILA checksum-adjust-transport route configured. The stale pointer is used for both reads and writes, enabling potential memory corruption, information disclosure, or kernel crash. The ILA route requires administrator privileges to set up, but trigger packets are unauthenticated once it exists.

Affectednet/ipv6/ila/ila_common.c (ILA - Identifier Locator Addressing)

Vulnerability analysis

The ILA checksum-adjustment code caches a pointer to the IPv6 header at the start of packet processing, then calls a function that may need to pull more data into the packet's linear buffer. For non-linear packets whose transport header lives in a page fragment, this pull operation can reallocate and free the original buffer, leaving the cached pointer dangling. The code subsequently reads freed memory through this stale pointer to compute a checksum difference and also writes the updated locator address through it, corrupting freed slab memory. The fix reloads the IPv6 header pointer after every buffer-pull operation so that both the checksum computation and the locator write always reference valid memory. A remote attacker can trigger this by sending a suitably constructed IPv6 packet to a device that has an ILA checksum-adjust-transport route or receive-side mapping in place; configuring that route requires CAP_NET_ADMIN, but the triggering packets themselves need no authentication.

03

BranchIntroducedFixed inPatch commit
6.124.56.12.1017097a0280b17
6.184.56.18.42472aba2603ca
6.64.56.6.148896a9512d0d8
7.14.57.1.6c6a13ae00dab
mainline4.57.2-rc592d3817649df