Katalog CVE

CVE-2026-97977

Nieznane
Opublikowano: Przetłumaczono: NVD NIST

Streszczenie

W jądrze Linux w sterowniku Bluetooth btusb występuje podatność use-after-free (UAF) związana z pracą asynchroniczną rx_work. Funkcje btusb_close() i btusb_flush() anulują pracę rx_work asynchronicznie, więc jeśli btusb_rx_work() już działa na innym CPU, może nadal działać po anulowaniu. Po odłączeniu urządzenia btusb_data jest zwalniane, a działająca praca może odwoływać się do zwolnionej pamięci. Poprawka polega na użyciu cancel_delayed_work_sync() zamiast asynchronicznego anulowania.

Ocena ryzyka

Podatność może prowadzić do dostępu do zwolnionej pamięci, co może skutkować awarią systemu, nieprawidłowym działaniem Bluetooth lub potencjalnie umożliwić atakującemu wykonanie kodu w kontekście jądra.

Rekomendacja

Zaleca się aktualizację jądra Linux do wersji zawierającej poprawkę, która używa synchronizowanego anulowania pracy rx_work, aby uniknąć wyścigu.

Inne podatności w Linux kernel

Zobacz wszystkie
Oryginalny opis (angielski, źródło NVD)

In the Linux kernel, the following vulnerability has been resolved: Bluetooth: btusb: Fix UAF of btusb_data by rx_work btusb_close() and btusb_flush() cancel data->rx_work with the asynchronous cancel_delayed_work(), so if btusb_rx_work() is already running on another CPU it keeps running after the cancel returns. btusb_disconnect() calls hci_unregister_dev(), which invokes btusb_close(), and then frees the btusb_data. A still running btusb_rx_work() then dereferences the freed data: while ((skb = skb_dequeue(&data->acl_q))) data->recv_acl(data->hdev, skb); Use cancel_delayed_work_sync() instead. In btusb_close() the cancel also has to happen after btusb_stop_traffic(), otherwise an URB completion racing with the cancel can requeue the work right after it has been waited for.

Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS