CVE-2026-89783

CVE-2026-89783

Critical · published September 16, 2026

CVSS v3.1
9.8
EPSS
1%
Percentile
53.2
In the wild
Unconfirmed
What it is

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

xfrm6: fix out-of-bounds write in xfrm6_input_addr() when secpath is full

The depth check in xfrm6_input_addr() is off by one:

if (1 + sp->len == XFRM_MAX_DEPTH)

goto drop;

...

sp->xvec[sp->len++] = x;

xfrm_input() can leave sp->len == XFRM_MAX_DEPTH, and the transport-mode

receive path re-enters IPv6 input via xfrm_trans_reinject() with that

secpath preserved. If the inner packet carries a destination-options HAO

option or a type-2 routing header, xfrm6_input_addr() is called with

sp->len == XFRM_MAX_DEPTH; the check (1 + 6 == 6) is false, so

sp->xvec[sp->len++] writes one slot past the 6-element xvec[]. The write

stays within the sec_path allocation (invisible to KASAN); UBSAN_BOUNDS

flags it and panics under panic_on_warn.

Use "sp->len >= XFRM_MAX_DEPTH", matching xfrm_input(). This also

restores one chain level the old check rejected at sp->len == 5.

UBSAN: array-index-out-of-bounds in net/ipv6/xfrm6_input.c:309:10

index 6 is out of range for type 'xfrm_state *[6]'

The record
Technical detail
CVSS v3.1
9.8 · CRITICAL
Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CVSS v4.0
Not supplied
EPSS
0.00714 · 53.2th percentile
Published
2026-09-16T13:17Z
References (8)
EPSS history
Timeline
  • 17 SEP 03:33Z
    EPSS moved — → 0%
    epss
  • 16 SEP 08:48Z
    xfrm6: fix out-of-bounds write in xfrm6_input_addr() when secpath is full
    cvelistv5