Saltar al contenido
CVE-2026-89550 Fuente: CVE.org Publicada · sin explotación confirmada

Vulnerabilidad de validación incorrecta de la entrada en Linux kernel (SUNRPC)

Linux · Linux · Publicada en CVE.org el 11-09-2026 · Última actualización: 10-11-2026

Descripción

En el kernel de Linux, se resolvió la siguiente vulnerabilidad: SUNRPC: svcauth_gss: exigir longitud mínima del token krb5 svcauth_gss_unwrap_priv() valida solo un límite superior de la longitud opaca proporcionada por la red antes de entregar el búfer a 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); El valor `len` recibido por la red fluye sin cambios como límite superior hacia la ruta de unwrap de krb5, por lo que un len en [0, 16] supera esta verificación y se entrega a gss_unwrap(). En un contexto krb5 v2, esto llega a gss_krb5_unwrap_v2(), que lee los campos del encabezado de token de 16 bytes de RFC 4121 en ptr+4 y ptr+6 y luego llama a rotate_left() antes de cualquier verificación de integridad. Con una longitud menor que el encabezado, las lecturas del encabezado van más allá del token, y la ruta `shift %= buf->len` de _rotate_left() puede dividir por cero cuando el token truncado ha llevado buf->len a cero. Un token que solo contiene el encabezado (len == 16) es igualmente inválido: con un campo RRC distinto de cero y el blob opaco terminando en el límite del búfer XDR, rotate_left() construye un subbúfer de longitud cero, llegando a la misma división. Se rechaza el token en el punto de entrada del servidor antes de que llegue al núcleo de unwrap de krb5. Un token sellado válido según RFC 4121 debe contener el encabezado de 16 bytes más al menos algo de carga cifrada. Se corrige agregando una verificación de longitud mínima inmediatamente después de la verificación de límite superior existente: if (len <= GSS_KRB5_TOK_HDR_LEN) goto unwrap_failed;

Qué hacer

Revisa si usas el producto afectado y en qué versión, y aplica la actualización o la mitigación que indique el aviso del fabricante. CISA no ha confirmado que se esté explotando; si eso cambia, esta ficha pasa a «explotada» y te avisamos en el boletín.

Versiones afectadas

  • Linux Afectadas: 7c9fdcfb1b64c47ed618c103b617af3f86e1239c y anteriores a 2188232509f1559cb8fcb0c9a4b1e04317fa0f15 · 7c9fdcfb1b64c47ed618c103b617af3f86e1239c y anteriores a 0ea5b0c7f212c2772d32c2b88287b89a9cdf6edd · 7c9fdcfb1b64c47ed618c103b617af3f86e1239c y anteriores a dd6afc6cab8c5d387d1ed2f069562ef7bdadd651 · 7c9fdcfb1b64c47ed618c103b617af3f86e1239c y anteriores a de942dd8c2c8358bcad04ce44271954c48924423 · 7c9fdcfb1b64c47ed618c103b617af3f86e1239c y anteriores a 2eed1e6a976a44015c3ee78841fe336796e2b21c · 7c9fdcfb1b64c47ed618c103b617af3f86e1239c y anteriores a a919c5c88769cf8fb3ec071e6078d830bf512489
  • Linux Afectadas: 2.6.18 No afectadas: 6.1.191 · 6.6.157 · 6.12.109 · 6.18.50 · 7.2.4 · 7.3

Según el registro de la vulnerabilidad en CVE.org, tal como lo publicó el fabricante. Confirma tu versión exacta en el aviso del fabricante.

Referencias

Ver el texto original en inglés (CVE.org)

SUNRPC: svcauth_gss: enforce krb5 token minimum length

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;

Recibe el boletín cuando CISA agregue vulnerabilidades nuevas

Te escribimos solo cuando CISA agrega vulnerabilidades nuevas, ya traducidas: cada día que haya, o en un resumen los lunes. Confirmas por correo y te das de baja con un clic.

Frecuencia