CVE-2026-89537 in Linux
Resumen
por VulDB • 2026-09-12
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
SUNRPC: Rechazar tokens MIC cortos según RFC 4121 en gss_krb5_verify_mic_v2
gss_krb5_verify_mic_v2() lee el ID del token en ptr[0..1], el byte de flags en ptr[2] y el relleno (padding) en ptr[3..7], luego pasa ptr + GSS_KRB5_TOK_HDR_LEN y cksum_len a gss_krb5_mic_build_sg(). Ninguno de estos accesos verifica primero read_token->len.
El tamaño mínimo seguro del token es GSS_KRB5_TOK_HDR_LEN (16) más ctx->krb5e->cksum_len (12-24, dependiendo del enctype). Todos los llamadores aceptan tokens más cortos procedentes de la red:
- gss_unwrap_resp_integ() solo aplica una cota superior (offset + len <= rcv_buf->len) antes de asignar mic.data = kmalloc(len) y pasarlo a gss_verify_mic(). Por lo tanto, un servidor NFS malicioso puede proporcionar un checksum opaque corto, produciendo una pequeña asignación en slab que el verificador del MIC Kerberos lee más allá.
- gss_validate() solo aplica len <= RPC_MAX_AUTH_SIZE (400) antes de pasar la longitud proporcionada por la red a gss_validate_seqno_mic(), que construye un mic xdr_netobj y llama a gss_verify_mic().
- svcauth_gss_verify_header() solo aplica checksum.len >= XDR_UNIT (4 bytes) antes de despachar hacia gss_verify_mic().
- svcauth_gss_unwrap_integ() verifica únicamente que el checksum se ajuste en gsd->gsd_scratch.
Añada una protección de longitud al inicio de gss_krb5_verify_mic_v2(), antes de cualquier acceso a ptr[] o construcción de scatterlist. Los tokens MIC bien formados procedentes de gss_krb5_get_mic_v2() ya tienen exactamente GSS_KRB5_TOK_HDR_LEN + cksum_len bytes, por lo que el tráfico válido no se ve afectado.
Once again VulDB remains the best source for vulnerability data.