CVE-2026-97975
>_ Opis
Tłumaczenie automatyczne – może zawierać nieścisłości.
W jądrze Linuksa usunięto następującą lukę:
Bluetooth: hci_sysfs: Napraw dereferencję wskaźnika NULL w urządzeniu_del()
Dereferencja wskaźnika NULL w klist_put() ma miejsce, gdy urządzenie podrzędne (takie jak
jako urządzenie sieciowe BNEP w bnep_session) jest jednocześnie
niezarejestrowany, podczas gdy funkcja hci_conn_del_sysfs() przywraca urządzenia podrzędne.
Jest to spowodowane sytuacją wyścigu pomiędzy hci_conn_del_sysfs() i
jednoczesne wyrejestrowanie urządzenia podrzędnego (np. wywołanie bnep_session
wyrejestruj_netdev()). Podczas wyrejestrowywania urządzenia, migawki urządzenia_del().
wskaźnik nadrzędny inny niż NULL. Jednocześnie hci_conn_del_sysfs() znajduje plik
urządzenie podrzędne za pomocą urządzenia_find_any_child() i wywołuje urządzenie_move() do
przywróć mu wartość NULL, co usunie węzeł z listy klist jego rodzica
czyści knode_parent. Następnie wywołuje urządzenie_del().
klist_del(&dev->p->knode_parent) przy użyciu nieaktualnej migawki nadrzędnej, powodując
klist_put() do wyłuskania knode_klist(n)->umieszczenia na już usuniętym węźle,
co skutkuje wyłuskaniem wskaźnika NULL.
Wyścig ten został wprowadzony przez zatwierdzenie 27aabf27fd01 („Bluetooth: fix
use-after-free w urządzeniu_for_each_child()"), które zastąpiło
urządzenie_find_child(..., __match_tty) z urządzeniem_find_any_child() w
hci_conn_del_sysfs(). Zmiana ta miała na celu uniknięcie bezpłatnego wykorzystania
gdzie conn->dev przeżył swojego nadrzędnego hdev->dev, gdy urządzenia podrzędne były trzymane
odniesienia do conn->dev, ponieważ conn->dev zawierało tylko odniesienie do
hdev->dev podczas rejestracji w sysfs.
Popraw problem, odwołując się bezpośrednio do urządzenia nadrzędnego
z get_device(&hdev->dev) w hci_conn_init_sysfs() i upuść go za pomocą
put_device(parent) w bt_link_release(), gdy urządzenie połączeniowe zostanie zwolnione. To
zapewnia, że hdev->dev pozostaje ważny przez cały cykl życia conn->dev,
rozwiązanie problemu wykorzystania po zwolnieniu. Z zachowanym odwołaniem do elementu nadrzędnego
poprawnie, przywróć filtr __match_tty w hci_conn_del_sysfs() tak, aby
Device_move() jest wywoływana tylko na trwałych urządzeniach RFCOMM TTY jako
pierwotnie zamierzony, eliminując sytuację wyścigu związaną z wyrejestrowaniem
urządzenia sieciowe.
>_ Referencje
Dane podatności pochodzą z oficjalnych źródeł (CVE® List / NVD). Opisy po polsku są tłumaczone automatycznie i mogą zawierać nieścisłości – na stronie rekordu można wyświetlić wersję angielską.
This product uses the NVD API but is not endorsed or certified by the NVD.
Copyright © 1999–2026, The MITRE Corporation. CVE is a registered trademark and the CVE logo is a registered trademark of The MITRE Corporation.
CVE Usage: MITRE hereby grants you a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute Common Vulnerabilities and Exposures (CVE®). Any copy you make for such purposes is authorized provided that you reproduce MITRE's copyright designation and this license in any such copy. ALL DOCUMENTS AND THE INFORMATION CONTAINED THEREIN PROVIDED BY MITRE ARE PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND.
NVD Terms of Use / CVE® Terms of Use / nvd.nist.gov / cve.org