CVE-2026-89538

CVE-2026-89538

Critical · published September 12, 2026

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

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

SUNRPC: Reject krb5 v2 wrap tokens with oversized ec field

gss_krb5_unwrap_v2() sets buf->len to a logical

length, which can be much smaller than head[0].iov_len

(the allocated receive-page capacity). It then calls

xdr_buf_trim() with a trim length derived from the 16-bit

"extra count" (ec) field in the Kerberos v2 token header.

The ec field is authenticated by the post-decrypt memcmp()

against the encrypted header copy, so a randomly-mutated

value is rejected. However, any peer holding a valid GSS

context can legitimately encrypt a token whose ec exceeds

the plaintext length. Per RFC 4121, such a token is

structurally malformed.

Although xdr_buf_trim() now clamps the buf->len subtraction

to avoid unsigned underflow, the buffer is still left in a

semantically invalid state (zero length, inconsistent iov

lengths) when ec is oversized.

Reject these tokens before calling xdr_buf_trim(), giving

callers a well-defined GSS_S_DEFECTIVE_TOKEN error and

keeping the xdr_buf internally consistent. The wrapped blob

begins at a nonzero offset -- both callers pass len as

offset + opaque_len -- so buf->len still counts the offset

bytes that precede the blob. Compare the trim length

against the remaining wrapped segment, buf->len - offset,

rather than the whole buffer; comparing against buf->len

alone leaves an offset-wide window in which an oversized ec

passes the test and xdr_buf_trim() cuts into the bytes ahead

of the blob.

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.1th percentile
Published
2026-09-12T00:19Z
References (8)
EPSS history
Timeline
  • 13 SEP 03:23Z
    EPSS moved — → 0%
    epss
  • 11 SEP 19:44Z
    SUNRPC: Reject krb5 v2 wrap tokens with oversized ec field
    cvelistv5