Instituto Nacional de ciberseguridad. Sección Incibe
Instituto Nacional de Ciberseguridad. Sección INCIBE-CERT

Vulnerabilidad en Linux (CVE-2025-71069)

Gravedad:
Pendiente de análisis
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
13/01/2026
Última modificación:
15/04/2026

Descripción

En el kernel de Linux, la siguiente vulnerabilidad ha sido resuelta:<br /> <br /> f2fs: invalidar la caché de dentry en la creación fallida de whiteout<br /> <br /> F2FS puede montar sistemas de archivos con valores de profundidad de directorio corruptos que se ajustan en tiempo de ejecución a MAX_DIR_HASH_DEPTH. Cuando se realizan operaciones RENAME_WHITEOUT en dichos directorios, f2fs_rename realiza modificaciones de directorio (actualizando la entrada de destino y eliminando la entrada de origen) antes de intentar añadir la entrada de whiteout a través de f2fs_add_link.<br /> <br /> Si f2fs_add_link falla debido a la estructura de directorio corrupta, la función devuelve un error a VFS, pero las modificaciones parciales del directorio ya se han confirmado en el disco. VFS asume que toda la operación de renombrado falló y no actualiza la caché de dentry, dejando mapeos obsoletos.<br /> <br /> En la ruta de error, VFS no llama a d_move() para actualizar la caché de dentry. Esto resulta en que new_dentry sigue apuntando al antiguo inodo (new_inode) al que ya se le ha decrementado su i_nlink a cero. La caché obsoleta causa que las operaciones subsiguientes referencien incorrectamente el inodo liberado.<br /> <br /> Esto hace que las operaciones subsiguientes utilicen información de dentry en caché que ya no coincide con el estado en disco. Cuando un segundo renombrado apunta a la misma entrada, VFS intenta decrementar i_nlink en el inodo obsoleto, que ya puede tener i_nlink=0, lo que activa una ADVERTENCIA en drop_nlink().<br /> <br /> Secuencia de ejemplo:<br /> 1. Primer renombrado (RENAME_WHITEOUT): file2 ? file1<br /> - f2fs actualiza la entrada file1 en disco (apunta al inodo 8)<br /> - f2fs elimina la entrada file2 en disco<br /> - f2fs_add_link(whiteout) falla (directorio corrupto)<br /> - Devuelve error a VFS<br /> - VFS no llama a d_move() debido al error<br /> - La caché de VFS todavía tiene: file1 ? inodo 7 (¡obsoleto!)<br /> - el inodo 7 tiene i_nlink=0 (ya decrementado)<br /> <br /> 2. Segundo renombrado: file3 ? file1<br /> - VFS usa caché obsoleta: file1 ? inodo 7<br /> - Intenta drop_nlink en el inodo 7 (i_nlink ya es 0)<br /> - ADVERTENCIA en drop_nlink()<br /> <br /> Solucione esto invalidando explícitamente old_dentry y new_dentry cuando f2fs_add_link falla durante la creación de whiteout. Esto fuerza a VFS a actualizarse desde el disco en operaciones subsiguientes, asegurando la consistencia de la caché incluso cuando el renombrado tiene éxito parcialmente.<br /> <br /> Reproductor:<br /> 1. Monte la imagen F2FS con i_current_depth corrupto<br /> 2. renameat2(file2, file1, RENAME_WHITEOUT)<br /> 3. renameat2(file3, file1, 0)<br /> 4. El sistema activa una ADVERTENCIA en drop_nlink()

Impacto