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-&gt;m_flags. En vfs_cache.c, este campo es accedido bajo un bloqueo inconsistente: algunas rutas leen y modifican m_flags bajo ci-&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-&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-&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-&gt;m_lock después de liberar inode_hash_lock.<br />
- Añadiendo protección ci-&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-&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.



