Katalog CVE

CVE-2026-89550

KrytyczneCVSS 9.8
Opublikowano: Zaktualizowano: Przetłumaczono: NVD NIST

Prawdopodobieństwo exploitacji (EPSS)

Niskie ryzyko
0.17%

Percentyl 6 - wyżej niż 6% wszystkich znanych CVE

Streszczenie

W jądrze Linux w funkcji svcauth_gss_unwrap_priv() sprawdzana była tylko górna granica długości tokenu dostarczonego przez sieć, bez minimalnej długości. Token krótszy lub równy 16 bajtów (rozmiar nagłówka RFC 4121) trafiał do gss_krb5_unwrap_v2(), gdzie odczyt nagłówka wykraczał poza bufor, a funkcja rotate_left() mogła doprowadzić do dzielenia przez zero. Podatność naprawiono dodając sprawdzenie minimalnej długości tokenu przed przekazaniem go do mechanizmu unwrap.

Ocena ryzyka

Zdalny atakujący może wysłać specjalnie spreparowany, zbyt krótki token krb5 do usługi korzystającej z SUNRPC z uwierzytelnianiem GSS, powodując dzielenie przez zero i awarię jądra (odmowa usługi). W środowiskach z NFS lub innymi usługami RPC z Kerberos może to prowadzić do niedostępności usługi.

Rekomendacja

Zaktualizuj jądro Linux do wersji zawierającej poprawkę wymuszającą minimalną długość tokenu krb5 (odrzucenie tokenów o długości <= GSS_KRB5_TOK_HDR_LEN). Do czasu wdrożenia poprawki rozważ ograniczenie dostępu do usług RPC/GSS z niezaufanych sieci.

Inne podatności w Linux kernel

Zobacz wszystkie
Oryginalny opis (angielski, źródło NVD)

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;

Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS