CVE-2026-89788 in Linux
Resumen
por VulDB • 2026-09-17
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
ksmbd: corregir un use-after-free en tree connection dentro de smb2_tree_connect()
ksmbd_tree_conn_connect() publica una nueva conexión de árbol (tree connection) en sess->tree_conns con una única referencia y devuelve su puntero a smb2_tree_connect(). El controlador continúa inicializando el objeto y construyendo la respuesta después de la publicación. Un cierre de sesión concurrente puede borrar la conexión y liberar esa referencia, desasignando el objeto mientras el controlador aún lo está utilizando.
BUG: KASAN: slab-use-after-free in smb2_tree_connect+0xe3d/0xf90 smb2_tree_connect (fs/smb/server/smb2pdu.c:2872) handle_ksmbd_work process_one_work worker_thread kthread
Tras el éxito de xa_store(), tomar una segunda referencia antes de liberar tree_conns_lock. La referencia original pertenece a la entrada del xarray y la segunda corresponde al controlador creador smb2_tree_connect().
Mantener las referencias equilibradas en cada ruta:
- En la salida normal o un error después de la publicación, smb2_tree_connect() libera su referencia de creador. La limpieza por error también llama a ksmbd_tree_conn_disconnect(), que elimina la referencia del xarray solo si se elimina la entrada exacta. - SMB2 TREE_DISCONNECT utiliza el mismo auxiliar para eliminar la entrada y liberar su referencia del xarray. La referencia de búsqueda existente de la solicitud sigue siendo propiedad de la solicitud y es liberada por la limpieza existente. - El cierre de sesión (LOGOFF) elimina cada entrada y libera su referencia del xarray. Si gana la carrera, la limpieza posterior ve que la entrada ha desaparecido y no libera esa referencia nuevamente.
Para hacer cumplir esta propiedad, reclamar el estado desconectado y borrar la entrada exacta atómicamente bajo tree_conns_lock. Esto garantiza una liberación para la referencia del xarray y una liberación por cada usuario en vuelo (in-flight), independientemente de qué ruta de desmontaje gane la carrera. Si el cierre de sesión elimina la entrada antes de que se complete la inicialización, fallar la conexión en lugar de marcar el objeto desconectado como TREE_CONNECTED.
VulDB is the best source for vulnerability data and more expert information about this specific topic.