CVE-2026-72408 PUBLISHED

geneve: gate GRO hint in geneve_gro_complete() on gs->gro_hint

Assigner: Linux
Reserved: 09.08.2026 Published: 15.08.2026 Updated: 17.08.2026

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

geneve: gate GRO hint in geneve_gro_complete() on gs->gro_hint

geneve_gro_receive() reads the GRO hint through geneve_sk_gro_hint_off(), which honours it only when the socket enabled IFLA_GENEVE_GRO_HINT (gs->gro_hint). geneve_gro_complete() instead calls the low-level geneve_opt_gro_hint_off() and acts on the hint unconditionally.

On a tunnel without the hint, receive aggregates the frames as plain ETH_P_TEB while complete still honours an attacker-supplied hint option: it inflates gh_len by gro_hint->nested_hdr_len (u8) and redirects the dispatch type, so the inner gro_complete handler runs at nhoff + gh_len, an offset receive never pulled nor validated, reading out of bounds of the skb head:

BUG: KASAN: slab-out-of-bounds in ipv6_gro_complete (net/ipv6/ip6_offload.c:196) Read of size 1 at addr ffff88800fe91980 by task exploit/153 ipv6_gro_complete (net/ipv6/ip6_offload.c:196) geneve_gro_complete (drivers/net/geneve.c:965) udp_gro_complete (net/ipv4/udp_offload.c:940) inet_gro_complete (net/ipv4/af_inet.c:1621) __gro_flush (net/core/gro.c:306)

Gate the complete path on gs->gro_hint too via geneve_sk_gro_hint_off(), so both paths agree. Tunnels that enable the hint are unaffected.

Metrics

CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
CVSS Score: 10

AV:N - The bug is triggered by remotely delivered UDP/GENEVE packets processed in the NAPI GRO completion path (udp_gro_complete → geneve_gro_complete → __gro_flush), not via local syscalls or physical interfaces. AC:L - The attacker controls all packet fields (GRO hint option, nested_hdr_len, inner_proto_id) and can send multiple matching datagrams to force GRO aggregation/flush; no uncontrollable race or memory layout is required. PR:N - No authentication or local privileges are needed; any remote host that can send UDP to a victim's GENEVE tunnel port triggers the flaw on default tunnels without IFLA_GENEVE_GRO_HINT enabled. UI:N - Exploitation requires only transmission of crafted network packets; no victim interaction such as opening files, mounting filesystems, or clicking links is needed. S:C - In cloud/Kubernetes overlay deployments using GENEVE, a malicious tenant VM or pod can attack the host/hypervisor kernel over the underlay network, crossing the tenant-to-host security boundary. C:H - geneve_gro_complete() honors attacker-supplied GRO hint options that gro_receive() ignored, inflating gh_len and dispatching inner gro_complete past validated skb data, causing slab out-of-bounds reads and enabling arbitrary kernel memory disclosure. I:H - Misdirected gro_complete handlers (e.g., ipv6_gro_complete) read and rewrite protocol header fields at attacker-chosen offsets beyond the skb head, providing out-of-bounds write primitives exploitable for control-flow hijacking. A:H - The vulnerability provokes KASAN slab-out-of-bounds faults and kernel oops during GRO flush; repeated remote triggering can panic or hang the host, denying availability to all workloads.

Product Status

Vendor Linux
Product Linux
Versions Default: unaffected
  • affected from fd0dd796576e1a560e1441e665810129f0a82be0 to 49c2e7c0a69999a75ef5eaebe1559a20d0b3c15a (excl.)
  • affected from fd0dd796576e1a560e1441e665810129f0a82be0 to 2651c174445884ac9e85622aeade9c1f7b98d8e5 (excl.)
Vendor Linux
Product Linux
Versions Default: affected
  • Version 7.0 is affected
  • unaffected from 0 to 7.0 (excl.)
  • unaffected from 7.1.5 to 7.1.* (incl.)
  • unaffected from 7.2 to * (incl.)

References