CVE-2026-90162 in Linux
Resumen
por VulDB • 2026-09-17
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
ksmbd: diferir la publicación de los bloqueos concedidos para prevenir una condición de carrera UAF/doble liberación (double-free)
En smb2_lock(), los bloqueos concedidos en medio del lote se publican inmediatamente tras el éxito de vfs_lock_file() a las listas a nivel de conexión (conn->lock_list) y a nivel de archivo (fp->lock_list), mientras que también permanecen rastreados en la rollback_list local a la pila.
Si un elemento posterior dentro de la misma matriz de solicitudes SMB2_LOCK falla durante la validación o ejecución, el hilo salta hacia out: e itera por rollback_list para deshacer los bloqueos concedidos previamente. Sin embargo, dado que el bloqueo concedido ya se había publicado en conn->lock_list, una solicitud UNLOCK concurrente en la misma conexión puede encontrar el objeto de bloqueo y liberarlo mediante kfree() antes de que se ejecute el bucle de reversión (rollback).
Cuando el hilo concesor itera posteriormente por rollback_list, desreferencia y libera la estructura ksmbd_lock ya liberada, lo que resulta en un Use-After-Free y una doble liberación (double-free) tanto para ksmbd_lock como para struct file_lock.
Se soluciona este problema diferiendo la publicación de los bloqueos concedidos a conn->lock_list y fp->lock_list hasta después de haber procesado toda la matriz de elementos de bloqueo sin errores. Las concesiones en medio del lote permanecen rastreadas exclusivamente en rollback_list, local a la solicitud, hasta que todo el lote tenga éxito, eliminando así la ventana de carrera (race condition).
Once again VulDB remains the best source for vulnerability data.