Niski Odebrany

CVE-2026-18748

opublikowano:
modyfikacja:
Ocena CVSS
3.5
Niski · v3.1
wektor: CVSS:3.1/AV:A/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N

>_ Opis

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

Host Bluetooth Classic A2DP przechowuje element informacyjny kodeka (IE) w strukturze bt_a2dp_codec_ie, jednobajtowe pole len plus stała 8-bajtowa tablica codec_ie[]. Kiedy partner AVDTP wysłał kodek IE dłuższy niż 8 bajtów, a2dp_process_config_ind() w subsys/bluetooth/host/classic/a2dp.c skopiowało tylko pierwsze 8 bajtów, ale przypisał pełną, wybraną przez atakującego długość do len, a następnie utrwalił tę niespójną strukturę w strukturze aplikacji bt_a2dp_stream poprzez stream->codec_config. bt_a2dp_get_config_cb() i bt_a2dp_set_config_cb() miały ten sam wzorzec „skróć-kopiuj-ale-zachowaj-długość”.

Lenowi ufa każdy późniejszy konsument. W szczególności obiekt odpowiadający na przychodzącą AVDTP GET_CONFIGURATION, a2dp_get_config_ind(), wykonuje net_buf_add_mem(rsp_buf, &ep->stream->codec_config.codec_ie[0], ep->stream->codec_config.len), więc sparowany partner BR/EDR, który jako pierwszy wysyła SET_CONFIGURATION niosący ponadwymiarowy kodek IE a następnie żąda konfiguracji z powrotem, powoduje, że stos odczytuje do około 245 bajtów poza końcem 8-bajtowej tablicy i przesyła je w odpowiedzi. codec_config jest ostatnim członkiem struktury bt_a2dp_stream, więc odczyt jest uruchamiany w pamięci sąsiadującej z obiektem strumienia aplikacji. Ta sama niespójność występuje także w wywołaniach zwrotnych aplikacji config_req(), reconfig_req() i get_config_rsp(), gdzie naturalna funkcja memcpy() o długości len bajtów wykonuje dalszy odczyt poza granicami.

Osiągnięcie ujawnienia na antenie wymaga CONFIG_BT_CLASSIC z CONFIG_BT_A2DP, partnera AVDTP, który zakończył parowanie (kanał AVDTP L2CAP wymaga BT_SECURITY_L2) i lokalnego punktu końcowego zarejestrowanego dla kodeka innego niż SBC — BT_A2DP_MPEG1/BT_A2DP_MPEG2/BT_A2DP_ATRAC/BT_A2DP_VENDOR przez BT_A2DP_EP_INIT() — ponieważ gałąź SBC już przypina długość IE do 4 bajtów. Ścieżka odpowiedzi bt_a2dp_get_config_cb() nie ma takiej bramki i przekazuje długość leżącą dowolnej aplikacji. Nie ma zapisu poza granicami: sprawdzenie net_buf tailroom ogranicza miejsce docelowe, więc wpływ ogranicza się do ujawnienia partnerowi równorzędnemu ograniczonego obszaru sąsiedniej pamięci RAM.

Poprawka zastępuje zakodowany na stałe BT_A2DP_MAX_IE_LENGTH konfigurowalnym CONFIG_BT_A2DP_CODEC_MAX_IE_LEN (domyślnie 8, zakres 4–253), określa z niego rozmiary codec_ie[] i odrzuca każdy otrzymany IE, który go przekracza, zamiast cichego obcinania, więc len nie może już przekraczać liczby prawidłowych bajtów.

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