data built 2026-10-19T13:16:53Z

Look up another CVE · open CVE-2026-89538 in the interactive tracker

CVE-2026-89538

SUNRPC: Reject krb5 v2 wrap tokens with oversized ec field

9.8 EPSS 0.7% AV:N

Published 2026-09-11 (37 days ago) by the Linux kernel CNA. Subsystem net/sunrpc. Debian urgency: not yet assigned.

What to do, per Debian release

Debian's own status for CVE-2026-89538 in every release this site tracks, and what each one means in practice. Every status below is the one the Debian Security Team publishes for this CVE. source

ReleaseStatus VersionWhat this means
Debian 12bookwormfixedDLA-4841-1 · 2026-10-17 · text6.1.190-1Update the kernel and reboot. DLA-4841-1 shipped the fix on 2026-10-17, in 6.1.190-1. A running kernel keeps the old code until the machine restarts.
Debian 13trixiefixedDSA-6528-1 · 2026-09-29 · text6.12.111-1Update the kernel and reboot. DSA-6528-1 shipped the fix on 2026-09-29, in 6.12.111-1. A running kernel keeps the old code until the machine restarts.
Debian 14forkyfixed7.2.6-1Update the kernel and reboot. Fixed in 7.2.6-1. A running kernel keeps the old code until the machine restarts.
Debian unstablesidfixed7.2.6-1Update the kernel and reboot. Fixed in 7.2.6-1. A running kernel keeps the old code until the machine restarts.
Debian 12bookworm · linux-6.12fixedDLA-4817-1 · 2026-10-04 · text6.12.111-1~deb12u1Update the kernel and reboot. DLA-4817-1 shipped the fix on 2026-10-04, in 6.12.111-1~deb12u1. A running kernel keeps the old code until the machine restarts.

The vulnerability

What the bug is

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.

Where it lives

The fix touches these files. If the subsystem is one you do not use, the practical exposure is lower, though the package is still the vulnerable one.

net/sunrpc/auth_gss/gss_krb5_wrap.c

What this is
KERNEL NFSD, SUNRPC, AND LOCKD SERVERSMAINTAINERS section matched on net/sunrpc/ · linux-nfs@vger.kernel.org · Supported
Kernel module
rpcsec_gss_krb5

Check it on the machine

grep -wE 'CONFIG_RPCSEC_GSS_KRB5|CONFIG_SUNRPC|CONFIG_SUNRPC_GSS' /boot/config-$(uname -r)

Reads the booted kernel's own configuration, on the machine and nowhere else. =y is built in, =m is a module, and an is not set line means the code is not there.

lsmod | grep -w rpcsec_gss_krb5

Prints a line if that module is loaded right now, and nothing if it is not. One that is not loaded can still be loaded later by anything that needs it.

Show whether Debian builds this, per release

Debian builds this as a loadable module. Every release below compiles it as a module on every flavour, so whether the code is in the running kernel depends on whether that module is loaded.

  • bookworm, trixie, forky, sid, bookworm · linux-6.12m
m
a loadable module on every flavour - check lsmod, can be blacklisted
Build switches
CONFIG_RPCSEC_GSS_KRB5, CONFIG_SUNRPC, CONFIG_SUNRPC_GSS
Reads as
all on means the file is compiled; any one off means it is not.

From the configuration Debian publishes for every kernel flavour it builds. It covers only the architectures Debian ships a linux-config package for, and nothing about a kernel you built yourself. Debian's own status above stays authoritative about the source package.MAINTAINERS kbuild Makefiles Debian linux-config packages

Signals

Published
2026-09-11 (37 days ago)source
CVSS
9.8 critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:Hsource recompute it
Attack vector
network (AV:N)source
EPSS
0.71%, higher than 52.8% of all CVEssource
CISA KEV
not listedthe KEV catalogue
Debian urgency
not yet assignedsource
Subsystem
net/sunrpc

Upstream fixes

The versions the CNA records as introducing and fixing this, and the commit for each. source

IntroducedFixed inCommit
3.135.10.270ac9efc29346b
3.135.15.221b5746095b59f
3.136.1.1889fc6d6e6db49
3.136.6.1574abb44a29bb5
3.136.12.109dfcd81ab4561
3.136.18.501f9856af065b
3.137.2.4880effc943ed
3.137.3ad484748eec0

Debian advisories

AdvisoryDateShipped toDebian
DLA-4841-12026-10-17bookworm 6.1.190-1tracker
DLA-4817-12026-10-04bookworm 6.12.111-1~deb12u1tracker
DSA-6528-12026-09-29trixie 6.12.111-1tracker

Why the CNA scored it this way

Quoted from the kernel CNA's own scoring file, word for word. A highlighted metric carries the most severe value CVSS v3.1 defines for it, which is what pushes the score up. source

AV:NAttack vector, network
gss_krb5_unwrap_v2() is reached from nfsd RPCSEC_GSS privacy unwrap on TCP/2049 and from the NFS client's gss_unwrap_resp_priv() on every krb5p reply, so a remote NFS peer delivers the oversized-ec wrap token over the network.
AC:LAttack complexity, low
A peer holding the GSS session keys can encrypt a RFC 4121 wrap token whose authenticated ec exceeds the plaintext; decrypt and the header memcmp succeed, then xdr_buf_trim() runs with that chosen length and no race or layout outside attacker control.
PR:NPrivileges required, none
A malicious or compromised NFS server that already shares a krb5p GSS context needs no account or capability on the victim client; ordinary krb5p replies and NFSv4.0 GSS callbacks are processed without local privileges on that host.
UI:NUser interaction, none
Once a krb5p NFS mount exists, the client unwraps every privacy-protected reply and NFSv4.0 GSS callback with no further mount, click, or open; idle revalidations and server-driven callbacks are sufficient.
S:UScope, unchanged
The corrupted xdr_buf and subsequent XDR decode and shift run in the host kernel that processed the RPC and do not cross a VM, IOMMU, or sandbox boundary.
C:HConfidentiality impact, high
An oversized ec makes xdr_buf_trim() underflow buf->len toward UINT_MAX, so later xdr_read_pages/xdr_shrink_bufhead use that length as a copy bound and read far past the receive buffer into adjacent kernel memory.
I:HIntegrity impact, high
xdr_shrink_bufhead() then calls xdr_buf_head_shift_right() with a near-UINT_MAX length derived from the wrapped buf->len, an out-of-bounds write into kernel memory that can be used for control-flow hijacking.
A:HAvailability impact, high
Those unbounded XDR copies and the inconsistent xdr_buf (wrapped or zero length versus iov_lens) oops or panic nfsd or the NFS client, and the peer can repeat the request at will.