From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-cve-announce@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@kernel.org>
Subject: CVE-2026-89550: SUNRPC: svcauth_gss: enforce krb5 token minimum length
Date: Fri, 11 Sep 2026 21:43:59 +0200 [thread overview]
Message-ID: <2026091121-CVE-2026-89550-7056@gregkh> (raw)
From: Greg Kroah-Hartman <gregkh@kernel.org>
Description
===========
In the Linux kernel, the following vulnerability has been resolved:
SUNRPC: svcauth_gss: enforce krb5 token minimum length
svcauth_gss_unwrap_priv() validates only an upper bound on the
wire-supplied opaque length before handing the buffer to
gss_unwrap():
if (len > xdr_stream_remaining(xdr))
goto unwrap_failed;
offset = xdr_stream_pos(xdr);
...
maj_stat = gss_unwrap(ctx, offset, offset + len, buf);
The wire value `len` flows unchanged as the upper bound into the
krb5 unwrap path, so a len in [0, 16] passes this check and is
handed to gss_unwrap(). For a krb5 v2 context that lands in
gss_krb5_unwrap_v2(), which reads the 16-byte RFC 4121 token
header fields at ptr+4 and ptr+6 and then calls rotate_left()
before any integrity check. With a sub-header length the header
reads run past the token, and _rotate_left()'s `shift %= buf->len`
path can divide by zero when buf->len has been driven to zero by
the truncated token. A header-only token (len == 16) is equally
invalid: with a non-zero RRC field and the opaque blob ending at
the XDR buffer boundary, rotate_left() builds a zero-length
subbuffer, reaching the same division.
Reject the token at the server entry point before it reaches the
krb5 unwrap core. A valid sealed RFC 4121 token must contain
the 16-byte header plus at least some encrypted payload.
Fix by adding a minimum-length check immediately after the
existing upper-bound check:
if (len <= GSS_KRB5_TOK_HDR_LEN)
goto unwrap_failed;
The Linux kernel CVE team has assigned CVE-2026-89550 to this issue.
Affected and fixed versions
===========================
Issue introduced in 2.6.18 with commit 7c9fdcfb1b64c47ed618c103b617af3f86e1239c and fixed in 6.12.109 with commit dd6afc6cab8c5d387d1ed2f069562ef7bdadd651
Issue introduced in 2.6.18 with commit 7c9fdcfb1b64c47ed618c103b617af3f86e1239c and fixed in 6.18.50 with commit de942dd8c2c8358bcad04ce44271954c48924423
Issue introduced in 2.6.18 with commit 7c9fdcfb1b64c47ed618c103b617af3f86e1239c and fixed in 7.2.4 with commit 2eed1e6a976a44015c3ee78841fe336796e2b21c
Issue introduced in 2.6.18 with commit 7c9fdcfb1b64c47ed618c103b617af3f86e1239c and fixed in 7.3-rc1 with commit a919c5c88769cf8fb3ec071e6078d830bf512489
Please see https://www.kernel.org for a full list of currently supported
kernel versions by the kernel community.
Unaffected versions might change over time as fixes are backported to
older supported kernel versions. The official CVE entry at
https://cve.org/CVERecord/?id=CVE-2026-89550
will be updated if fixes are backported, please check that for the most
up to date information about this issue.
Affected files
==============
The file(s) affected by this issue are:
net/sunrpc/auth_gss/svcauth_gss.c
Mitigation
==========
The Linux kernel CVE team recommends that you update to the latest
stable kernel version for this, and many other bugfixes. Individual
changes are never tested alone, but rather are part of a larger kernel
release. Cherry-picking individual commits is not recommended or
supported by the Linux kernel community at all. If however, updating to
the latest release is impossible, the individual changes to resolve this
issue can be found at these commits:
https://git.kernel.org/stable/c/dd6afc6cab8c5d387d1ed2f069562ef7bdadd651
https://git.kernel.org/stable/c/de942dd8c2c8358bcad04ce44271954c48924423
https://git.kernel.org/stable/c/2eed1e6a976a44015c3ee78841fe336796e2b21c
https://git.kernel.org/stable/c/a919c5c88769cf8fb3ec071e6078d830bf512489
reply other threads:[~2026-09-11 19:57 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=2026091121-CVE-2026-89550-7056@gregkh \
--to=gregkh@linuxfoundation.org \
--cc=cve@kernel.org \
--cc=gregkh@kernel.org \
--cc=linux-cve-announce@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox