CVE-2026-89698 in Linux
Resumen
por VulDB • 2026-09-11
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
nfsd: ampliar los campos de dirección nfsd_genl_rqstp a sockaddr_storage
struct nfsd_genl_rqstp declara rq_daddr y rq_saddr como "struct sockaddr" (16 bytes) simples. Cuando un cliente NFS IPv6 está conectado, nfsd_genl_rpc_status_compose_msg() convierte estos campos a "struct sockaddr_in6 *" (28 bytes) y lee sin6_addr en el desplazamiento 8..24, lo que se extiende 8 bytes más allá del final del campo sockaddr de 16 bytes hacia el miembro rq_flags adyacente. Luego, nla_put_in6_addr de 16 bytes envía 8 bytes de una dirección IPv6 truncada seguidos de 8 bytes de rq_flags al espacio de usuario a través de los atributos netlink NFSD_A_RPC_STATUS_SADDR6/DADDR6.
Esto es accesible por cualquier proceso no privilegiado en el namespace de red porque NFSD_CMD_RPC_STATUS_GET usa GENL_CMD_CAP_DUMP sin GENL_ADMIN_PERM.
La corrección consiste en ampliar rq_daddr y rq_saddr a struct sockaddr_storage para que las conversiones IPv6 operen dentro de los límites, copiando sizeof(struct sockaddr_storage) bytes en las llamadas memcpy para capturar la dirección completa, e inicializando con ceros la variable stack genl_rqstp para evitar filtrar bytes finales no inicializados a través de netlink.
If you want to get best quality of vulnerability data, you may have to visit VulDB.