Średni Oczekuje na analizę

CVE-2026-19940

opublikowano:
modyfikacja:
Ocena CVSS
6.5
Średni · v3.1
wektor: CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

>_ Opis

Tłumaczenie automatyczne – może zawierać nieścisłości.

Implementacja klasycznej bramy audio z profilem głośnomówiącym Bluetooth w subsys/bluetooth/host/classic/hfp_ag.c utrzymuje obiekty struct bt_hfp_ag w statycznej puli indeksowanej według indeksu połączenia ACL. Po rozłączeniu łącza funkcja hfp_ag_disconnected() anuluje ag->tx_work i elementy robocze dotyczące poszczególnych połączeń, a następnie czyści ag->acl_conn, co oznacza pulę jako wolną — ale pozostawia ag->ongoing_call_work (i ag->slc_work) nietknięte. Następne połączenie, które wyląduje w tym samym slocie, rozpoczyna funkcję hfp_ag_create(), której jedynym testem zajętości jest ag->acl_conn, i natychmiast wykonuje memset(ag, 0, sizeof(struct bt_hfp_ag)), po którym następuje k_work_init_delayable(). Zerowanie i ponowne inicjowanie k_work_delayable, którego węzeł struct _timeout jest nadal połączony z listą limitów czasu jądra, pozostawia jądro trzymające odniesienie do węzła z łączami poprzedni/następny o wartości NULL.

ag->ongoing_call_work jest uzbrojony przez zdalnego partnera: kiedy jednostka głośnomówiąca wysyła AT+CIND? podczas ustanawiania połączenia na poziomie usług, a aplikacja zapewnia asynchroniczne wywołanie zwrotne get_ongoing_call, AG planuje pracę na CONFIG_BT_HFP_AG_GET_ONGOING_CALL_TIMEOUT milisekund (domyślnie 10000). Timer zostanie anulowany tylko wtedy, gdy aplikacja odpowie na czas za pomocą bt_hfp_ag_ongoing_calls(). Element równorzędny, który wysyła AT+CIND?, następnie odłącza DLC HFP RFCOMM, a następnie natychmiast otwiera go ponownie na tym samym łączu ACL, ponownie wykorzystuje tę samą szczelinę puli w sposób deterministyczny, dopóki nie upłynął limit czasu — serwer AG RFCOMM akceptuje ścieżkę (hfp_ag_accept()) wywołuje bezpośrednio hfp_ag_create(), więc strona zdalna steruje zarówno demontażem, jak i ponownym utworzeniem.

Rezultatem jest uszkodzenie listy limitów czasu jądra: sys_dlist_remove() na zerowanym węźle wykonuje zapisy przez wskaźniki NULL ze ścieżki ogłaszania zegara, a ponowne zaplanowanie ponownie zainicjowanej pracy powoduje ponowne wstawienie węzła, do którego lista już się odwołuje, tworząc cykl, w którym pętla ogłaszania przechodzi z zablokowanymi przerwaniami. Zauważalnym skutkiem jest awaria lub zawieszenie całego systemu, czyli odmowa usługi osiągalna z zasięgu radiowego Bluetooth; nie są zapisywane żadne dane kontrolowane przez osobę atakującą, więc samo w sobie nie powoduje to wykonania kodu. Ekspozycja jest ograniczona do kompilacji z CONFIG_BT_HFP_AG (domyślnie oznaczonych jako eksperymentalne i wyłączone), których aplikacja implementuje asynchroniczne wywołanie zwrotne get_ongoing_call.

>_ Słabości (CWE)

>_ 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