CVE-2026-17054
>_ Opis
Tłumaczenie automatyczne – może zawierać nieścisłości.
Sterownik Wi-Fi hostowany przez Espressif ESP (drivers/wifi/esp_hosted/) analizuje ramki otrzymane przez SPI od koprocesora ESP w esp_hosted_event_task(). W przypadku ramek kontrolnych pobierano 16-bitowe pole TLV data_length prosto z przewodu i przekazywano je do pb_istream_from_buffer(frame.data_value, ramka.data_length) bez sprawdzania go z długością ramki lub buforem odbiorczym. frame.data_value zajmuje 26 bajtów w 3188-bajtowym obiekcie stosu, więc data_length do 0xFFFF powoduje, że funkcja pb_decode() odczytuje około 62 KB po końcu tego obiektu.
Tylko pierwszy fragment fragmentarycznej odpowiedzi kontrolnej zawiera nagłówek TLV; sterownik prefiksu wykonywał transakcje SPI w trybie półdupleksu i po cichu odrzucał każdą ramkę, którą koprocesor umieścił w kolejce podczas transmisji hosta (esp_hosted_hal_spi_transfer() zamienił bufor RX na bufor TX). Kiedy odrzucona ramka jest pierwszym fragmentem fragmentarycznej odpowiedzi, sterownik traktuje następny fragment jako nową ramkę — jego nagłówek i suma kontrolna na fragment są autentyczne, więc oba etapy sprawdzania poprawności przechodzą pomyślnie — i odczytuje nagłówek TLV z surowych bajtów kontynuacji protobuf. Bajty te pochodzą z odpowiedzi kontrolnych, na których rozmiar i zawartość może wpłynąć sąsiadujący, nieuwierzytelniony atakujący, w szczególności z listy skanowania punktów dostępowych, która rośnie wraz z liczbą i długością SSID punktów dostępu w zasięgu radiowym.
Skutkiem jest raczej odmowa usługi niż ujawnienie. Odczyt poza końcem obszaru RAM powoduje błąd urządzenia, a sterownik wybiera CONFIG_NANOPB_ENABLE_MALLOC, więc prefiksy długości pamięci odczytywane poza granicami również wpływają na alokację sterty. Same bajty spoza zakresu nie docierają do aplikacji: funkcja pb_decode() jest uruchamiana w połowie strumienia na surowych bajtach kontynuacji protobuf, więc prawie zawsze kończy się niepowodzeniem, a wszystko, co zdekodowało, nadal musiałoby przejść funkcję esp_hosted_response(), która wymaga dokładnego dopasowania msg_id do oczekującego żądania, a następnie esp_hosted_ctrl_response(), która wymaga odpowiedzi na sukces — atakujący wpływa rozmiar i treść prawidłowych odpowiedzi kontrolnych, a nie struktura zdekodowana z źle wyrównanych bajtów. Dwie powiązane defekty w tej samej ścieżce odbioru powodują, że odmowa usługi jest trwała: zabezpieczenie przed ponownym złożeniem fragmentu miało rozmiar ESP_FRAME_SIZE zamiast ESP_FRAME_MAX_PAYLOAD i po wyzwoleniu był zwracany z jedynego wątku RX zamiast odrzucać ramkę, a nieobsługiwane zdarzenia sterujące były umieszczane w kolejce za pomocą k_msgq_put(..., K_FOREVER) w kolejce z ośmioma wpisami, która nic nie jest drenowana, blokując ten sam wątek. Sterownik nie ma watchdoga ani ścieżki ponownego uruchomienia, więc w każdym przypadku cały odbiór Wi-Fi zostaje przerwany do czasu ponownego uruchomienia urządzenia.
>_ 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