CVE-2026-98736 in Linuxinformation

Résumé

par VulDB • 18/10/2026

Dans le noyau Linux, la vulnérabilité suivante a été corrigée :

Bluetooth: hci_conn : Verrouiller l'accès au parent lors de la configuration SCO améliorée

hci_enhanced_setup_sync() s'exécute sur la file d'attente des requêtes (request workqueue) sans que le verrou hci_dev_lock, détenu par son appelant lorsque la tâche a été mise en file d'attente, ne soit acquis. Sa vérification de la capacité CVSD et find_next_esco_param() déréférencent conn->parent alors que la file d'attente de réception (receive workqueue) peut désassocier et libérer ce parent.

L'enchaînement suivant peut provoquer un use-after-free :

hci_enhanced_setup_sync() hci_disconn_complete_evt() chargement de conn->parent hci_dev_lock() hci_conn_del(parent ACL) désassociation de l'enfant SCO suppression de la référence parente du lien effacement de child->parent libération du parent ACL bt_link_release() kfree(parent) hci_dev_unlock() lecture de parent->features[0][3]

La référence détenue pour l'enfant SCO mis en file d'attente ne maintient pas son parent ACL en vie après la désassociation. Le commit 42de40abe25d ("Bluetooth: hci_conn : corriger la durée de vie du contexte de configuration SCO") protège l'enfant stocké dans le contexte mis en file d'attente, mais laisse ces accès au parent non protégés.

Avec un délai de diagnostic de 40 ms après le chargement de conn->parent, un noyau instrumenté basé sur fd179f8a05be, qui contient déjà 42de40abe25d, affiche :

BUG: KASAN: slab-use-after-free in hci_enhanced_setup_sync+0xda5/0xdf0 Lecture de taille 1 à l'adresse ffff888102204047 par la tâche kworker/u17:0/93 Trace d'appel : hci_enhanced_setup_sync+0xda5/0xdf0 hci_cmd_sync_work+0x13c/0x290 process_one_work+0x6b4/0x10e0

Alloué par la tâche 92 : __hci_conn_add+0x304/0x1df0 hci_connect_acl+0x349/0x3e0 hci_connect_sco+0x3b/0x9a0 sco_sock_connect+0x475/0xca0

Libéré par la tâche 94 : kfree+0x121/0x3c0 bt_link_release+0x79/0xa0 device_release+0xc8/0x240 kobject_put+0x14d/0x280 hci_conn_del+0x524/0xe30 hci_disconn_complete_evt+0x403/0x8c0 hci_event_packet+0x71b/0xb20 hci_rx_work+0x293/0x730

L'adresse accédée se trouve à 71 octets dans le parent ACL libéré, au niveau de son octet features[0][3] ; l'enfant SCO mis en file d'attente est un objet différent. Le diagnostic préserve le parent chargé pendant la durée du délai, ce qui correspond à la vérification des capacités compilée sans modification, et ne modifie pas les références parents ni le chemin de démantèlement (teardown path).

Maintenir hci_dev_lock() tout au long du changement de codec, y compris pour chaque appel à find_next_esco_param(), et le relâcher en cas d'erreur de sélection. Conserver configure_datapath_sync() hors de la section critique car il attend des événements HCI. Préserver la sélection des paramètres et les valeurs de retour existantes.

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

Responsable

Linux

Réserver

25/09/2026

Divulgation

18/10/2026

Modérer

accepté

Entrée

VDB-421931

EPSS

0.00168

KEV

non

Activités

faible

Sources

Do you want to use VulDB in your project?

Use the official API to access entries easily!