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

Vulnerabilidad en Linux (CVE-2025-68809)

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 /> ksmbd: vfs: corregir condición de carrera en m_flags en vfs_cache<br /> <br /> ksmbd mantiene el estado de eliminación al cerrar y eliminación pendiente en ksmbd_inode-&amp;gt;m_flags. En vfs_cache.c, este campo es accedido bajo un bloqueo inconsistente: algunas rutas leen y modifican m_flags bajo ci-&amp;gt;m_lock mientras que otras lo hacen sin tomar el bloqueo en absoluto.<br /> <br /> Ejemplos:<br /> <br /> - ksmbd_query_inode_status() y __ksmbd_inode_close() usan ci-&amp;gt;m_lock al verificar o actualizar m_flags.<br /> - ksmbd_inode_pending_delete(), ksmbd_set_inode_pending_delete(), ksmbd_clear_inode_pending_delete() y ksmbd_fd_set_delete_on_close() solían leer y modificar m_flags sin ci-&amp;gt;m_lock.<br /> <br /> Esto crea una potencial condición de carrera de datos en m_flags cuando múltiples hilos abren, cierran y eliminan el mismo archivo concurrentemente. En el peor de los casos, los bits de eliminación al cerrar y eliminación pendiente pueden perderse u observarse en un estado inconsistente, lo que lleva a semánticas de eliminación confusas (archivos que permanecen en el disco después de la eliminación al cerrar, o archivos que desaparecen mientras aún están en uso).<br /> <br /> Solucionarlo mediante:<br /> <br /> - Haciendo que ksmbd_query_inode_status() examine m_flags bajo ci-&amp;gt;m_lock después de liberar inode_hash_lock.<br /> - Añadiendo protección ci-&amp;gt;m_lock a todas las funciones auxiliares que leen o modifican m_flags (ksmbd_inode_pending_delete(), ksmbd_set_inode_pending_delete(), ksmbd_clear_inode_pending_delete(), ksmbd_fd_set_delete_on_close()).<br /> - Manteniendo la protección ci-&amp;gt;m_lock existente en __ksmbd_inode_close(), y moviendo la eliminación real de unlink/xattr fuera del bloqueo.<br /> <br /> Esto unifica el bloqueo alrededor de m_flags y elimina la condición de carrera de datos mientras se preserva el comportamiento existente de eliminación al cerrar.

Impacto