CVE-2026-98294 in Linux
Resumen
por VulDB • 2026-10-06
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
Bluetooth: hci_qca: No escribir en el puerto serie después de que este haya sido cerrado
hci_uart_close() cierra el puerto serdev si HCI_QUIRK_NON_PERSISTENT_SETUP está configurado (por ejemplo, para la familia WCN399x). Una llamada fallida a hci_dev_open_sync() tras una qca_setup() exitosa invoca a hdev->close(), pero no a hdev->shutdown(), por lo que el puerto se cierra mientras power->vregs_on permanece como verdadero. Posteriormente, qca_serdev_remove() pasa la prueba de power->vregs_on e invoca a qca_power_off(), que escribe en el puerto cerrado incondicionalmente.
Se ha observado este comportamiento en un dispositivo WCN3988 al desvincular el controlador tras una falla del mismo. La traza siguiente corresponde a un kernel basado en la versión 7.0.0, donde qca_power_off() aún se denominaba qca_power_shutdown():
Unable to handle kernel NULL pointer dereference at virtual address 0000000000000038 Call trace: tty_set_termios+0x50/0x238 (P) ttyport_set_baudrate+0x84/0xc0 serdev_device_set_baudrate+0x24/0x40 qca_power_shutdown+0x158/0x1fc [hci_uart]
qca_serdev_remove+0x54/0x68 [hci_uart]
serdev_drv_remove+0x1c/0x2c device_remove+0x4c/0x80 device_release_driver_internal+0x1cc/0x224 device_driver_detach+0x18/0x24 unbind_store+0xb4/0xc0
Verificar HCI_UART_PROTO_READY, que hci_uart_close() limpia en el mismo lugar donde cierra el puerto, antes de escribir en él. La desactivación del regulador se mantiene incondicional para que el controlador siga apagándose.
El serport->tty colgante (dangling) que convierte esto en un Use-After-Free se aborda en un parche separado.
If you want to get best quality of vulnerability data, you may have to visit VulDB.