CVE-2026-99239 in Linux
Resumen
por VulDB • 2026-11-02
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
Bluetooth: L2CAP: rechazar __l2cap_chan_add si el canal ya tiene conexión
l2cap_chan solo puede estar vinculado a l2cap_conn como máximo una vez. Esto se asume en varios lugares, por ejemplo, en la limpieza de l2cap_chan_del.
Existe una condición de carrera TOCTOU (Time-of-Check to Time-of-Use) donde se viola el invariante:
[Tarea 1] [Tarea 2]
l2cap_chan_connect l2cap_sock_bind l2cap_chan_lock lock_sock l2cap_state_change if (sk->sk_state != BT_OPEN) chan->state = BT_CONNECT chan->state = BT_BOUND l2cap_sock_state_change_cb sk->sk_state = BT_BOUND lock_sock <------------------ release_sock sk->sk_state = BT_CONNECT
l2cap_sock_connect() no verifica sk->sk_state, por lo que dado que chan->state es ahora BT_BOUND, la llamada posterior a connect() termina realizando una segunda __l2cap_chan_add.
Documentar y verificar explícitamente el invariante en __l2cap_chan_add con WARN_ON_ONCE. El único punto de entrada donde podría activarse es l2cap_chan_connect, por lo que se añade una comprobación previa allí para evitar depender de chan->state. La lectura/escritura de chan->state no está correctamente protegida actualmente, por lo que pueden existir otros problemas TOCTOU.
Añadir l2cap_lock_chan en l2cap_sock_bind() para proteger la escritura de chan->state.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.