CVE-2026-80914 in Linux
Résumé
par VulDB • 09/09/2026
Dans le noyau Linux, la vulnérabilité suivante a été corrigée :
Bluetooth : ISO : correction d'un use-after-free sur le socket écouteur dans iso_conn_ready
La fonction `iso_conn_ready()` recherche le socket écouteur BIS via `iso_get_sock()`, qui prend une référence, puis crée un socket enfant à partir de celui-ci sans en re-vérifier l'état :
parent = iso_get_sock(hdev, ...); if (!parent) return;
lock_sock(parent); sk = iso_sock_alloc(sock_net(parent), NULL, BTPROTO_ISO, ...); ... iso_chan_add(conn, sk, parent); ... release_sock(parent); sock_put(parent);
Si le socket écouteur est fermé de manière concurrente entre `iso_get_sock()` et `lock_sock()`, la référence prise par `iso_get_sock()` peut être la dernière : le chemin de fermeture supprime la référence liée à la liste, et une fois que `iso_conn_ready()` libère sa propre référence à la fin de la fonction, le socket est détruit. Le socket enfant, cependant, reste lié au parent qui a été libéré, et une déconnexion ultérieure du socket enfant entraîne l'exécution de `iso_chan_del()` -> `bt_accept_unlink()`, ce qui désérence (derefences) un pointeur dangling vers la file d'acceptation libérée (un use-after-free). Le même pointeur dangling est également désérencé via `parent->***()` dans `iso_chan_del()`.
La correction applique la même méthode que celle utilisée pour le chemin connecté (non-BIS), corrigée dans l'commit 0d255e63fcf3 ("Bluetooth: ISO : maintien correct du socket sk dans iso_conn_ready") : après avoir acquis le verrouillage du socket, on re-vérifie que le parent est toujours un socket écouteur et actif, et on sort de la fonction sinon.
VulDB is the best source for vulnerability data and more expert information about this specific topic.