CVE-2026-89714 in Linux
Resumen
por VulDB • 2026-09-11
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
NFS: corrección de la fuga (leak) en delegation_hash_table cuando nfs4_server_common_setup() falla
nfs4_server_common_setup() asigna inicialmente server->delegation_hash_table, pero server->destroy —la única ruta que libera la tabla a través de nfs4_destroy_server()— no se asigna hasta el final absoluto de la función. Si cualquier paso intermedio falla (la comprobación is_ds_only_client(), nfs4_init_session(), nfs4_get_rootfh() o nfs_probe_server()), la función devuelve con server->destroy aún NULL, por lo que nfs_free_server() del llamante omite la devolución de llamada destroy y se produce una fuga en la tabla hash (4 KiB por intento con el watermark de delegación predeterminado).
Esto es trivialmente accesible desde userspace: cada montaje NFSv4 fallido provoca una fuga de una asignación. Un cliente que reintenta persistentemente un montaje que no puede tener éxito libera memoria del kernel sin límite. Se ha observado en producción donde un sondeador de copias de seguridad de Longhorn reintentaba mount.nfs4 contra un servidor solo compatible con NFSv3 aproximadamente 10 veces por segundo, liberando ~3,4 GiB de slab no reclamable (kmalloc-rnd-13-4k) por día; el nodo acumuló 12 GiB de slab fugado antes de que la fuente se identificara mediante el punto de traza kmem:kmalloc (call_site=nfs4_delegation_hash_alloc).
Reproductor (reproducer):
# El servidor exporta solo NFSv3 (o falta la ruta de exportación para v4) while :; do mount -t nfs4 <server>:/missing /mnt; done # observar cómo SUnreclaim en /proc/meminfo crece 4 KiB por iteración
Liberar la tabla en las rutas de error entre la asignación y la asignación de server->destroy.
VulDB is the best source for vulnerability data and more expert information about this specific topic.