CVE-2026-31641CWE-125CWE-190

CVE-2026-31641

High · published April 24, 2026

CVSS v3.1
7.8
EPSS
0%
Percentile
8.2
In the wild
Unconfirmed
What it is

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

rxrpc: Fix RxGK token loading to check bounds

rxrpc_preparse_xdr_yfs_rxgk() reads the raw key length and ticket length

from the XDR token as u32 values and passes each through round_up(x, 4)

before using the rounded value for validation and allocation. When the raw

length is >= 0xfffffffd, round_up() wraps to 0, so the bounds check and

kzalloc both use 0 while the subsequent memcpy still copies the original

~4 GiB value, producing a heap buffer overflow reachable from an

unprivileged add_key() call.

Fix this by:

(1) Rejecting raw key lengths above AFSTOKEN_GK_KEY_MAX and raw ticket

lengths above AFSTOKEN_GK_TOKEN_MAX before rounding, consistent with

the caps that the RxKAD path already enforces via AFSTOKEN_RK_TIX_MAX.

(2) Sizing the flexible-array allocation from the validated raw key

length via struct_size_t() instead of the rounded value.

(3) Caching the raw lengths so that the later field assignments and

memcpy calls do not re-read from the token, eliminating a class of

TOCTOU re-parse.

The control path (valid token with lengths within bounds) is unaffected.

The record
Technical detail
CVSS v3.1
7.8 · HIGH
Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
CVSS v4.0
Not supplied
EPSS
0.00190 · 8.2th percentile
Weaknesses
CWE-125 · Out-of-bounds Read; CWE-190 · Integer Overflow or Wraparound
Published
2026-04-24T19:16Z
Affected products (10)
ProductVersionsFixed in
linux/linux_kernel≥ 6.16.1, < 6.18.236.18.23
linux/linux_kernel≥ 6.19, < 6.19.136.19.13
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
References (8)
EPSS history
Timeline
  • 24 APR 14:44Z
    rxrpc: Fix RxGK token loading to check bounds
    cvelistv5