CVE-2026-89698 in Linux
Sumário
de VulDB • 11/09/2026
No kernel do Linux, a seguinte vulnerabilidade foi corrigida:
nfsd: ampliar os campos de endereço nfsd_genl_rqstp para sockaddr_storage
A estrutura `struct nfsd_genl_rqstp` declara `rq_daddr` e `rq_saddr` como "struct sockaddr" simples (16 bytes). Quando um cliente NFS IPv6 está conectado, a função `nfsd_genl_rpc_status_compose_msg()` faz o cast desses campos para `"struct sockaddr_in6 *"` (28 bytes) e lê `sin6_addr` no deslocamento 8..24, o que se estende por 8 bytes além do final do campo `sockaddr` de 16 bytes, atingindo o membro adjacente `rq_flags`. O `nla_put_in6_addr` de 16 bytes então envia para userspace via atributos netlink NFSD_A_RPC_STATUS_SADDR6/DADDR6 8 bytes de um endereço IPv6 truncado seguidos por 8 bytes de `rq_flags`.
Isso é acessível por qualquer processo não privilegiado no namespace de rede, pois o comando NFSD_CMD_RPC_STATUS_GET usa GENL_CMD_CAP_DUMP sem exigir GENL_ADMIN_PERM.
A correção consiste em ampliar os campos `rq_daddr` e `rq_saddr` para `struct sockaddr_storage`, garantindo que os casts IPv6 operem dentro dos limites; copiar sizeof(struct sockaddr_storage) bytes nas chamadas memcpy para capturar o endereço completo; e inicializar com zero a variável de pilha genl_rqstp, evitando assim o vazamento de bytes não inicializados do final da estrutura através do netlink.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.