CVE-2026-7656
WysokieCVSS 8.1Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 24 - wyżej niż 24% wszystkich znanych CVE
Streszczenie
Podatność w Zephyr RTOS dotyczy obsługi komunikatów Neighbor Discovery dla IPv6. Błędna logika warunkowa powoduje, że wszystkie walidacje RFC 4861 (w tym wymóg Hop Limit == 255) są pomijane, gdy pole ICMPv6 code ma wartość 0 (normalną dla ND). Umożliwia to atakującemu wstrzyknięcie sfałszowanych komunikatów RA/NS/NA.
Ocena ryzyka
Atakujący z sieci lokalnej (lub zdalny, dzięki ominięciu zabezpieczenia Hop Limit) może przejąć kontrolę nad konfiguracją IPv6 ofiary, zatruć pamięć sąsiadów, przekierować ruch (MITM) lub przeprowadzić atak DoS. Może też podmienić serwery DNS (jeśli włączono CONFIG_NET_IPV6_RA_RDNSS).
Rekomendacja
Zaleca się natychmiastową aktualizację Zephyr RTOS do wersji zawierającej poprawkę (powyżej v4.4.0). Jeśli aktualizacja nie jest możliwa, należy ograniczyć zaufanie do sieci lokalnej i rozważyć wyłączenie obsługi IPv6 ND lub filtrowanie ruchu ICMPv6 na granicach sieci.
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 IPv6 Neighbor Discovery handlers in subsys/net/ip/ipv6_nbr.c (handle_ra_input, handle_ns_input, handle_na_input) used an incorrect boolean expression that combined the RFC 4861 validity checks with the ICMPv6 code check using the wrong operator precedence: the form was ((length/hop/source/target checks) && (icmp_hdr->code != 0)). Because every legitimate ND message carries ICMPv6 code 0, an attacker setting code == 0 (the normal value) caused the entire predicate to evaluate false, so the packet was never dropped and all of the other checks were silently skipped. The bypassed checks include the mandatory Hop Limit == 255 verification (which proves an ND packet originated on-link and was not forwarded) and, for Router Advertisements, the requirement that the source be a link-local address, as well as multicast-target sanity checks. As a result, an adjacent on-link attacker — and, because the Hop-Limit-255 guard is bypassed, potentially a remote/off-link attacker whose packets would otherwise be rejected — can have forged Router Advertisement, Neighbor Solicitation, and Neighbor Advertisement messages accepted. A forged RA lets the attacker reconfigure the victim's default router, on-link prefixes (SLAAC), MTU, reachable/retransmit timers, and (with CONFIG_NET_IPV6_RA_RDNSS) DNS servers, while forged NS/NA enable neighbor-cache poisoning, enabling man-in-the-middle, traffic redirection, and denial of service. The flaw is an input-validation/authentication weakness rather than a memory-safety issue: the underlying packet-parsing primitives (net_pkt_get_data, net_pkt_read, net_pkt_skip) are independently bounds-safe and the validated length is the true buffer length, so skipping the length check causes no out-of-bounds access. The defect has existed since the logic was introduced in 2018 and shipped in all releases through v4.4.0; it is fixed by splitting the condition so any failing check drops the packet.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

