CVE-2026-99013 in Linux
Resumen
por VulDB • 2026-10-23
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
Bluetooth: ISO: Rechazar configuración concurrente del oyente BIS
`iso_sock_listen()` libera el bloqueo del socket antes de llamar a `iso_listen_bis()` para preservar el ordenamiento de los bloqueos (`hdev->lock`). Por lo tanto, dos llamadas simultáneas a `listen()` en el mismo socket de difusión pueden observar ambas el estado `BT_BOUND`. El llamador A puede adjuntar `connA` y liberar los bloqueos; luego, el llamador B puede adquirirlos y adjuntar `connB` antes de que A publique `BT_LISTEN`.
`__iso_chan_add()` verifica si `connB` ya tiene un socket asignado, pero no verifica si el socket ya tiene una conexión asociada. La segunda adición sobrescribe `iso_pi(sk)->conn`, lo que provoca la fuga de la referencia a `connA` y deja intacto `connA->sk`. El desmontaje del socket sigue al ciclo de vida de `connB`; por tanto, eventos posteriores en `connA` pueden provocar un acceso a un socket obsoleto (stale).
Se vuelve a verificar el estado `BT_BOUND` y se exige que `iso_pi(sk)->conn` sea NULL después de adquirir los bloqueos del dispositivo HCI y del socket dentro de `iso_listen_bis()`. La verificación de la conexión también cubre el intervalo entre la adición y la publicación de `BT_LISTEN`. Se rechaza una configuración competitiva devolviendo `-EBADFD` a través de la ruta de desbloqueo existente, antes de asignar otra conexión.
Un informe KASAN registrado desde un kernel instrumentado muestra:
BUG: KASAN: slab-use-after-free en iso_sock_hold+0x119/0x1f0 Call Trace: iso_sock_hold+0x119/0x1f0 iso_conn_del+0xe4/0x270 hci_disconn_complete_evt+0x351/0x8c0 hci_event_packet+0x71b/0xb20 hci_rx_work+0x293/0x730
Asignado por la tarea 93: sk_prot_alloc+0x113/0x220 sk_alloc+0x2b/0x6d0 bt_sock_alloc+0x29/0x370 iso_sock_alloc.constprop.0+0x19/0x300 iso_sock_create+0x94/0x100
Liberado por la tarea 93: kfree+0x121/0x3c0 __sk_destruct+0x42b/0x540 iso_sock_release+0x29d/0x340 __sock_release+0xa1/0x260 sock_close+0x10/0x20
If you want to get best quality of vulnerability data, you may have to visit VulDB.