CRITICAL
net/ipv6 IOAM Overflow
CVE-2026-43186
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
KernelScan AI8.6HIGH
01Description
In the Linux kernel, the following vulnerability has been resolved: ipv6: ioam: fix heap buffer overflow in __ioam6_fill_trace_data() On the receive path, __ioam6_fill_trace_data() uses trace->nodelen to decide how much data to write for each node. It trusts this field as-is from the incoming packet, with no consistency check against trace->type (the 24-bit field that tells which data items are present). A crafted packet can set nodelen=0 while setting type bits 0-21, causing the function to write ~100 bytes past the allocated region (into skb_shared_info), which corrupts adjacent heap memory and leads to a kernel panic. Add a shared helper ioam6_trace_compute_nodelen() in ioam6.c to derive the expected nodelen from the type field, and use it: - in ioam6_iptunnel.c (send path, existing validation) to replace the open-coded computation; - in exthdrs.c (receive path, ipv6_hop_ioam) to drop packets whose nodelen is inconsistent with the type field, before any data is written. Per RFC 9197, bits 12-21 are each short (4-octet) fields, so they are included in IOAM6_MASK_SHORT_FIELDS (changed from 0xff100000 to 0xff1ffc00).
02KernelScan AI Analysis
Risk summary
Remote attackers can send crafted IPv6 IOAM packets to trigger a heap buffer overflow, corrupting kernel memory and causing system crashes. This affects systems with IPv6 and IOAM enabled that process network traffic.
Vulnerability analysis
The vulnerability occurs in __ioam6_fill_trace_data() which trusts the nodelen field from incoming IPv6 IOAM packets without validating it against the type field. An attacker can set nodelen=0 while setting type bits 0-21, causing ~100 bytes to be written past the allocated buffer into skb_shared_info, corrupting adjacent heap memory. The fix adds ioam6_trace_compute_nodelen() to derive expected nodelen from the type field and validates consistency in the receive path before writing data. This is network-reachable from any source that can send IPv6 packets to systems with IOAM processing enabled.
03Fix Versions
| Branch | Fixed in | Patch commit |
|---|---|---|
| 5.15 | 5.15.202 | f4d9d4b8fd83 |
| 6.1 | 6.1.165 | fb3c662fafeb |
| 6.12 | 6.12.75 | 0591d6509c2f |
| 6.18 | 6.18.16 | e90346a2f1e8 |
| 6.19 | 6.19.6 | ea3632aefc04 |
| 6.6 | 6.6.128 | 632d233cf2e6 |
| mainline | 7.0 | 6db8b56eed62 |