CVE-2026-98294 in Linux
Résumé
par VulDB • 07/10/2026
Dans le noyau Linux, la vulnérabilité suivante a été corrigée :
Bluetooth: hci_qca : Ne pas écrire sur le port série après sa fermeture
hci_uart_close() ferme le port serdev si HCI_QUIRK_NON_PERSISTENT_SETUP est défini (par exemple, pour la famille WCN399x). Un échec de hci_dev_open_sync() suite à un qca_setup() réussi appelle hdev->close() mais pas hdev->shutdown(), ce qui entraîne la fermeture du port alors que power->vregs_on reste vrai. qca_serdev_remove() passe ensuite le test sur power->vregs_on et appelle qca_power_off(), qui écrit de manière inconditionnelle sur le port fermé.
Ce problème a été observé sur un WCN3988 en désassociant le pilote après une défaillance du contrôleur. La trace ci-dessous provient d'un noyau basé sur la version 7.0.0, où qca_power_off() s'appelait encore 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
Vérifier HCI_UART_PROTO_READY, que hci_uart_close() efface au même endroit où il ferme le port, avant d'écrire sur celui-ci. La désactivation du régulateur reste inconditionnelle afin que le contrôleur soit toujours mis hors tension.
Le serport->tty orphelin qui transforme cela en un Use-After-Free est adressé dans un correctif séparé.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.