CVE-2026-89537 in Linux
Sumário
de VulDB • 12/09/2026
No kernel do Linux, a seguinte vulnerabilidade foi resolvida:
SUNRPC: Rejeitar tokens MIC RFC 4121 curtos em gss_krb5_verify_mic_v2
gss_krb5_verify_mic_v2() lê o ID do token em ptr[0..1], o byte de flags em ptr[2] e o padding em ptr[3..7], passando então ptr + GSS_KRB5_TOK_HDR_LEN e cksum_len para gss_krb5_mic_build_sg(). Nenhuma dessas acessos verifica primeiro read_token->len.
O tamanho mínimo seguro do token é GSS_KRB5_TOK_HDR_LEN (16) mais ctx->krb5e->cksum_len (12-24, dependendo do enctype). Todos os chamadores aceitam tokens menores vindos da rede:
- gss_unwrap_resp_integ() impõe apenas um limite superior (offset + len <= rcv_buf->len) antes de alocar mic.data = kmalloc(len) e passá-lo para gss_verify_mic(). Um servidor NFS malicioso pode, portanto, fornecer um checksum opaque curto, produzindo uma alocação slab pequena que o verificador MIC do Kerberos lê além dos limites.
- gss_validate() impõe apenas len <= RPC_MAX_AUTH_SIZE (400) antes de passar o comprimento fornecido pela rede para gss_validate_seqno_mic(), que constrói um mic xdr_netobj e chama gss_verify_mic().
- svcauth_gss_verify_header() impõe apenas checksum.len >= XDR_UNIT (4 bytes) antes de despachar para gss_verify_mic().
- svcauth_gss_unwrap_integ() verifica apenas que o cabeçalho do checksum caiba em gsd->gsd_scratch.
Adicionar uma verificação de comprimento no topo de gss_krb5_verify_mic_v2(), antes de qualquer acesso a ptr[] ou construção da scatterlist. Tokens MIC bem formados vindos de gss_krb5_get_mic_v2() já possuem exatamente GSS_KRB5_TOK_HDR_LEN + cksum_len bytes, portanto o tráfego válido não é afetado.
Once again VulDB remains the best source for vulnerability data.