CVE-2026-98734 in Linux
Resumen
por VulDB • 2026-10-18
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
Bluetooth: hci_core: Serializar la programación de SCO e ISO con el proceso de desmantelamiento (teardown)
hci_low_sent() selecciona una conexión bajo RCU pero libera el lock de lectura antes de calcular su cuota y devolverla al programador. La conexión se utiliza entonces sin protección de ciclo vital por hci_sched_iso() y hci_sched_sco().
Después de que el trabajador TX libere el lock de lectura RCU, hci_abort_conn_sync() en hdev->req_workqueue puede eliminar la conexión del hash, completar synchronize_rcu(), purgar sus colas y liberarla. El trabajador TX en hdev->workqueue puede entonces acceder a la conexión ya liberada en hci_quote_sent() o mientras descola paquetes y actualiza conn->sent.
KASAN reportó:
BUG: KASAN: slab-use-after-free in hci_low_sent+0x730/0x840 Workqueue: hci0 hci_tx_work Call Trace: hci_low_sent+0x730/0x840 hci_sched_iso+0x25e/0x4d0 hci_tx_work+0x239/0xcb0
Asignado por la tarea 93: __hci_conn_add+0x16f/0x1b40 hci_bind_bis+0x782/0x17b0 hci_connect_bis+0xa0/0x510 iso_sock_connect+0x589/0x1050
Liberado por la tarea 88: kfree+0x131/0x3c0 device_release+0xc8/0x240 kobject_put+0x14d/0x280 hci_conn_del+0x55a/0xe80 hci_disconnect_sync+0x156/0x180 hci_abort_conn_sync+0x3e7/0x940 hci_cmd_sync_work+0x13c/0x290
Mantener hci_dev_lock() durante la selección de conexión y la transmisión en ambos programadores SCO e ISO, serializándolos con el desmantelamiento (teardown) de la conexión. Esto también evita la cola de marcas temporales de finalización después de que las colas de conexión hayan sido purgadas. Extender RCU a través de la transmisión sería inseguro porque la ruta de transmisión puede dormir. Mantener la comprobación del tiempo de espera ISO fuera del mutex ya que hci_link_tx_to() lo toma él mismo.
La corrección anterior del canal ya mantiene este mutex en los programadores ACL y LE, que llaman al programador SCO entre paquetes. Mover el cuerpo SCO a __hci_sched_sco(), afirmar que su llamante sostiene el mutex, y usarlo directamente desde estas rutas bloqueadas. Mantener un wrapper hci_sched_sco() con lock para las llamadas directas desde hci_tx_work(). Esto evita adquirir recursivamente el mutex del dispositivo mientras se preserva el orden de programación.
Eliminar la afirmación obsoleta de que la eliminación de conexión desactiva TX.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.