KernelScan.io

HIGH Introduced in 3.11

net TunnelHeadroom Overflow

CVE-2026-80978

CVSS 7.8 / 10.0 NVD

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

KernelScan AI8.5HIGH

01

In the Linux kernel, the following vulnerability has been resolved: net: cap advertised IP tunnel headroom IP tunnel devices derive their advertised needed_headroom from lower output devices. A stack of user-created devices can make the derived value larger than the 16-bit skb header offsets can represent. Once IP output reserves it, skb head expansion can wrap those offsets. The runtime transmit path already caps a growing needed_headroom at 512. Apply the same cap when tunnel configuration publishes needed_headroom derived from a lower output device. Capping the advertised value is safe: IP tunnel transmit still expands the skb when a packet needs more headroom. A nonsensical stacked configuration can therefore incur an extra reallocation, but it cannot publish an unbounded reservation to upper layers.

02

Engine v0.6.0

Risk summary

A local user who can create network namespaces (including unprivileged users via user namespaces) can stack IP tunnel devices to inflate the advertised headroom beyond what 16-bit skb header offsets can represent. When packets are transmitted, the wrapped offsets corrupt kernel memory, enabling privilege escalation or container escape. Any system allowing untrusted local users or container workloads with user namespace support is at risk.

Affectedinclude/net/ip_tunnels.h, net/ipv4/ip_tunnel.c, net/ipv6/ip6_gre.c, net/ipv6/ip6_tunnel.c, net/ipv6/sit.c (IP tunnel subsystem)

Vulnerability analysis

IP tunnel devices publish a headroom requirement based on the underlying device beneath them. By stacking multiple tunnel devices, an attacker can inflate that requirement beyond what the kernel's internal packet-buffer counters can represent. When the kernel later reserves space for a transmitted packet, those counters wrap and corrupt buffer metadata, causing memory corruption. The fix limits the published requirement to 512 bytes whenever tunnel configuration derives it from a lower device, matching the limit already enforced during live transmission. The transmit logic still grows buffers on demand if a packet truly needs more space, so normal traffic is unaffected. Any local user who can create tunnel devices can reach this path, and unprivileged users gain that ability through user namespaces.

03

BranchIntroducedFixed inPatch commit
5.103.115.10.270fb889a619723
5.153.115.15.221b160422f8103
6.13.116.1.188d36e75f56691
6.123.116.12.109bc4e05ae66c9
6.183.116.18.50af0ee8f04bea
6.63.116.6.15784783961cb8b
7.23.117.2.49144f2c53a04
mainline3.117.36b222adeb934
cip/5.103.115.10.271-cip78fb889a619723
cip/6.13.116.1.189-cip61d36e75f56691
cip/6.1-rt3.116.1.189-cip61-rt32d36e75f56691
cip/6.123.116.12.111-cip32bc4e05ae66c9

04

State of the newest release of each Civil Infrastructure Platform SLTS tree, from CIP's own fix records.

CIP treeState
cip/6.12Fixed in 6.12.111-cip32
cip/6.1Fixed in 6.1.189-cip61
cip/6.1-rtFixed in 6.1.189-cip61-rt32
cip/5.10Fixed in 5.10.271-cip78
cip/5.10-rtAffected — no CIP fix yet (latest 5.10.268-cip77-rt34)
cip/4.19Affected — no CIP fix yet (latest 4.19.325-cip136)
cip/4.19-rtAffected — no CIP fix yet (latest 4.19.325-cip136-rt50)
cip/4.4Affected — no CIP fix yet (latest 4.4.302-cip115)
cip/4.4-rtAffected — no CIP fix yet (latest 4.4.302-cip115-rt63)