Una vulnerabilidad en el kernel de Linux (CVE-2026-31694) permite a un usuario local sin privilegios obtener root en el sistema mediante un fallo en la caché de readdir de FUSE. El problema reside en la función fuse_add_dirent_to_cache() del fichero fs/fuse/readdir.c, que omite comprobar si el tamaño completo de un registro de directorio cabe en una página de memoria: cuando no lo hace, avanza a una página nueva y descarta el resto, pero nunca valida que el registro quepa en una sola página. Un demonio FUSE controlado por el atacante que devuelva un namelen=4095 genera un registro de 4120 bytes, 24 de los cuales se desbordan más allá del tamaño de página y corrompen la página contigua en la memoria del kernel.
El fallo, latente desde 2018 (commit 69e3455), fue descubierto por Qi Tang y Zijun Hu y corregido por Samuel Page el 20 de abril de 2026. Afecta a las versiones del kernel 6.16 hasta la publicación del parche. Dos vías permiten explotar la vulnerabilidad sin privilegios: el binario setuid fusermount3, presente por defecto en escritorios GNOME (Ubuntu, Fedora, Linux Mint) y la creación de espacios de nombres de usuario sin privilegios, habilitada por defecto en Debian, Arch, Fedora y RHEL 9. Ninguna de las mitigaciones habituales (AppArmor, SELinux, seccomp) bloquea el ataque, ya que el desbordamiento se produce al procesar la respuesta del demonio en la caché del kernel. La única forma de impedirlo, retirar el bit setuid de fusermount3 o deshabilitar los user namespaces, rompería funcionalidades legítimas como Snap, GVFS, SSHFS o los contenedores rootless.
