CVE-2026-10680
WysokieCVSS 7.6Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 2 - wyżej niż 2% wszystkich znanych CVE
Streszczenie
W stosie Bluetooth BR/EDR (Classic) w Zephyr RTOS wykryto podatność w handlerach L2CAP sygnalizacji konfiguracji (l2cap_br_conf_req i l2cap_br_conf_rsp). Walidacja minimalnego rozmiaru polecenia była przeprowadzana względem buf->len (pozostałe bajty w całym PDU) zamiast len (długość danych polecenia z nagłówka L2CAP). Atakujący może wysłać polecenie CONF_REQ z nagłówkiem mniejszym niż struktura żądania konfiguracji (np. 0), a następnie kolejne polecenie, tak aby buf->len nadal spełniał warunek. Prowadzi to do niedomiaru (underflow) zmiennej opt_len do wartości bliskiej 0xFFFF, co skutkuje odczytem poza zakresem bufora i potencjalnym zapisem poza zakresem, gdy dane opcji kodują MTU lub timeout.
Ocena ryzyka
Nieuwierzytelniony atakujący w zasięgu radiowym Bluetooth może ustanowić połączenie ACL i wywołać uszkodzenie pamięci oraz odmowę usługi (awaria hosta/urządzenia). Podatność może być wykorzystana przed parowaniem/szyfrowaniem, co zwiększa ryzyko ataku na urządzenia z włączonym Bluetooth Classic.
Rekomendacja
Należy niezwłocznie zaktualizować Zephyr RTOS do wersji zawierającej poprawkę (v4.4.0 lub nowszej z łatką). Jeśli aktualizacja nie jest możliwa, należy rozważyć wyłączenie Bluetooth Classic (BR/EDR) lub ograniczenie zasięgu radiowego.
Inne podatności w Zephyr RTOS
Zobacz wszystkie- CVE-2026-19940Średnie
Podatność w implementacji Bluetooth Classic Hands-Free Profile Audio Gateway (HFP AG) w Zephyr RTOS powoduje uszkodzenie listy timeoutów jądra. Poprzez wysłanie AT+CIND? i szybkie ponowne połączenie, zdalny atakujący może wywołać zawieszenie lub awarię całego systemu.
- CVE-2026-19575Wysokie
Podatność w Zephyr RTOS dotyczy handlera trybu użytkownika z_vrfy_device_deinit() w kernel/device.c, który walidował argument dev za pomocą K_SYSCALL_OBJ_INIT(dev, K_OBJ_ANY). Ponieważ k_object_validate() pomija porównanie typu dla K_OBJ_ANY, sprawdzenie ograniczało się do tego, czy wskaźnik należy do dowolnego obiektu jądra, do którego wątek ma uprawnienia — bez weryfikacji rzeczywistego typu obiektu. Umożliwia to lokalnemu wątkowi w trybie użytkownika przekazanie obiektu stosu wątku (np. z k_thread_stack_alloc()) i wykonanie kodu jądra w trybie supervisora.
- CVE-2026-19574Wysokie
W podsystemie MMU dla architektury ARM64 w Zephyr RTOS identyfikatory ASID przydzielane są przez prosty licznik round-robin, który po przekroczeniu 255 możliwych wartości zaczyna przydzielać te same ASID aktywnym domenom pamięci. Ponieważ mapowania domen są instalowane jako nieglobalne (MT_NG), ASID jest jedynym znacznikiem odróżniającym tłumaczenia w TLB, a ścieżka przełączenia kontekstu nie opróżnia TLB w przypadku kolizji osiągniętej przez trzecią domenę. W efekcie wątki w trybie użytkownika mogą czytać i zapisywać pamięć należącą do innej domeny, naruszając izolację domen pamięci.
- CVE-2026-19569Wysokie
Podatność w jądrze Zephyr RTOS pozwala nieuprzywilejowanemu wątkowi użytkownika na zapis poza granicami w pamięci jądra. Wynika to z braku kontroli przepełnienia przy obliczaniu rozmiaru alokacji dla dynamicznych obiektów jądra, co prowadzi do alokacji zbyt małego bloku pamięci. Atakujący może wykorzystać to do eskalacji uprawnień i wykonania kodu na poziomie jądra.
- CVE-2026-19185Wysokie
W systemie Zephyr RTOS znaleziono podatność w weryfikatorze wywołań systemowych dla funkcji i3c_do_ccc(), która nie sprawdza wskaźników danych poszczególnych celów w strukturze i3c_ccc_payload. Ponadto weryfikacja działa na żywej strukturze, co pozwala innemu wątkowi na zmianę pól między sprawdzeniem a użyciem. Umożliwia to nieuprzywilejowanemu wątkowi zapis do dowolnego adresu jądra (przez odczyt CCC) lub ujawnienie pamięci jądra (przez zapis CCC), co prowadzi do eskalacji uprawnień.
- CVE-2026-18747Średnie
Podatność w transporcie SMP-over-console w Zephyr RTOS pozwala nieuwierzytelnionemu atakującemu na wywołanie niedomiaru długości bufora przez wysłanie pojedynczej 7-bajtowej ramki na konsolę zarządzania. Prowadzi to do odczytu poza zakresem, co może spowodować awarię wątku MCUmgr (denial of service) lub potencjalny wyciek pamięci.
- CVE-2026-18417Średnie
W Zephyr RTOS wykryto podatność w warstwie gniazd BSD, gdzie błąd asynchroniczny był przechowywany w polu user_data kontekstu sieciowego, które dla nasłuchujących gniazd TCP jest używane do przechowywania wskaźnika do kontekstu rodzica. W wersji v4.3.0, po zdarzeniu wyłączenia interfejsu, wywołanie zwrotne accept nie było dezaktywowane, co prowadziło do ponownego użycia skażonej wartości jako wskaźnika i zapisu pod nieprawidłowy adres, powodując krytyczny błąd jądra (awarię lub reset urządzenia).
- CVE-2026-16513Wysokie
Podatność w weryfikatorze syscall RTIO w Zephyr RTOS (przed v4.3.0) pozwala nieuprzywilejowanemu wątkowi użytkownika zapisać wskaźnik do kontrolowanych danych pod dowolnym adresem jądra. Brakuje sprawdzenia K_SYSCALL_MEMORY_WRITE dla parametru wyjściowego handle, co umożliwia eskalację uprawnień do trybu jądra.
- CVE-2026-16514Średnie
Funkcja gptp_mi_qualify_announce() w podsystemie gPTP systemu Zephyr przetwarza odebrane komunikaty Announce, porównując tożsamości zegarów. Pętla porównująca używa liczby kroków (steps_removed) sterowanej przez atakującego, zamiast rzeczywistej liczby wpisów w TLV, co prowadzi do odczytu poza buforem sieciowym. Atakujący w tej samej sieci L2 może wysłać jeden ramkę, powodując odczyt około 2 KB poza buforem i potencjalnie wywołując denial of service przez zablokowanie wątku RX.
- CVE-2026-16512Niskie
Funkcja gptp_handle_msg() w Zephyr RTOS nie sprawdza długości odebranej ramki przed dereferencją wskaźnika do nagłówka gPTP. Skrócona ramka może prowadzić do odczytu poza przydzielonym buforem, co ujawnia zawartość pamięci.
Oryginalny opis (angielski, źródło NVD)
The Classic (BR/EDR) L2CAP signaling handlers l2cap_br_conf_req() and l2cap_br_conf_rsp() in subsys/bluetooth/host/classic/l2cap_br.c validated the minimum command size against buf->len (the bytes remaining in the whole received PDU) instead of len (the per-command data length from the L2CAP signaling header). Because multiple signaling commands can be packed into one PDU, buf->len may exceed a command's len. An attacker can send a CONF_REQ command with a header length smaller than the configuration-request structure (e.g. 0), followed by another command so that buf->len still satisfies the check. The check then passes incorrectly and opt_len = len - sizeof(*req) underflows the uint16_t to a near-0xFFFF value. The configuration-option loop, which lacks an opt_len-versus-buf->len guard, then walks far past the end of the pooled ACL receive buffer using net_buf pull primitives that perform no runtime bounds check, producing an out-of-bounds read of host memory and, when the out-of-bounds option bytes encode an MTU or flush-timeout option, an out-of-bounds write. The BR/EDR signaling channel is processed before pairing/encryption and an L2CAP channel to an L0 service such as SDP can be opened without pairing, so an unauthenticated peer within radio range that can establish an ACL connection can trigger the flaw, leading to memory corruption and denial of service (host/device crash). The defect is present in released versions including v4.4.0. The fix validates against len instead of buf->len in both handlers.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

