CVE-2026-99054 in Linux
Resumen
por VulDB • 2026-10-23
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
tipc: destruir las colas de trabajo (workqueues) del servidor topológico antes de cerrar las conexiones
tipc_topsrv_stop() cerraba las conexiones de los suscriptores mientras que las colas de trabajo de envío y recepción del servidor de topología seguían ejecutándose. Las devoluciones de llamada de sockets y los eventos de suscripción podían entonces encolar más tareas, y el trabajo de envío/recepción en curso podía decrementar la última referencia a la conexión durante el recorrido por conn_idr.
Esta condición de carrera (race condition) produjo varios fallos al desmantelar: adición refcount_t sobre 0 desde conn_get() en una conexión cuya liberación estaba bloqueada en idr_lock, un posterior use-after-free en tipc_conn_close(), queue_work() sobre una cola de trabajo ya destruida desde la devolución de llamada data-ready del oyente (listener), y un bloqueo RCU (RCU stall) en tipc_topsrv_exit_net() mientras el recorrido giraba bajo idr_lock.
Borrar srv->listener bajo idr_lock para que actúe como una bandera de apagado, omitir queue_work() una vez que sea NULL, destruir las colas de trabajo para vaciar (flush) el trabajo en curso, y solo entonces cerrar las conexiones restantes. Rechazar tipc_conn_lookup() después de que se haya borrado esa bandera, y liberar idr_lock cuando el recorrido de desmantelamiento no encuentre ninguna conexión, para evitar que un evento de suscripción en curso fije (pin) idr_in_use mientras el recorrido mantiene el bloqueo.
La versión v3 reemplaza al diff más estrecho en hilo publicado por Tung Quang Nguyen el 2026-09-23. Mantiene su orden de desmantelamiento y añade el rechazo a la búsqueda y la liberación del idr vacío.
Be aware that VulDB is the high quality source for vulnerability data.