CVE-2026-10657
NiskieCVSS 3.7Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 15 - wyżej niż 15% wszystkich znanych CVE
Streszczenie
W Zephyr OS wykryto podatność w resolverze DNS, gdzie funkcja memcmp() porównuje zawsze 7 bajtów z sufiksem ".local", nawet gdy końcowa etykieta hostname jest krótsza. Powoduje to odczyt poza końcem łańcucha, co może prowadzić do błędu strony i odmowy usługi (DoS). Problem występuje tylko przy włączonym CONFIG_MDNS_RESOLVER i istnieje od wersji v1.10.0.
Ocena ryzyka
Operatorzy lub zdalne dane wejściowe (np. nazwy serwerów z konfiguracji, URL-e) mogą wywołać odczyt poza granicami bufora, co w przypadku ciasno alokowanej pamięci (np. z k_usermode_string_alloc_copy) skutkuje błędem krytycznym i przerwaniem działania systemu.
Rekomendacja
Należy natychmiast zaktualizować Zephyr OS do wersji zawierającej poprawkę, która zastępuje memcmp() funkcją strcmp() bezpieczną dla znaku NUL. Jeśli aktualizacja nie jest możliwa, wyłącz CONFIG_MDNS_RESOLVER w konfiguracji jądra.
Inne podatności w Zephyr OS
Zobacz wszystkie- CVE-2026-17052Wysokie
W sterowniku Time-aware GPIO w Zephyr OS brakuje walidacji wskaźników wyjściowych w syscallu tgpio_pin_read_ts_ec(), co pozwala nieuprzywilejowanemu wątkowi na zapis do dowolnej pamięci jądra. Podatność występuje tylko w konfiguracjach z CONFIG_USERSPACE=y i CONFIG_TIMEAWARE_GPIO=y, a praktyczny zakres jest ograniczony przez problemy z kompilacją w niektórych wersjach.
- CVE-2026-15893Średnie
W Zephyr OS funkcja net_if_ipv6_calc_reachable_time() w subsys/net/ip/net_if.c nieprawidłowo oblicza czas osiągalności sąsiada (ND reachable time), gdy base_reachable_time wynosi 1, co prowadzi do wartości 0. Atakujący może wysłać nieuwierzytelniony Router Advertisement z polem Reachable Time ustawionym na 1, co powoduje wyzerowanie czasu osiągalności. W efekcie, gdy sąsiad zostanie potwierdzony jako osiągalny, może wystąpić asercja jądra (jeśli CONFIG_ASSERT jest włączone) lub natychmiastowe wygaśnięcie timera, co prowadzi do ciągłych ponownych zapytań i degradacji Neighbor Discovery.
- CVE-2026-13216Średnie
Sterownik virtio PCI w Zephyr OS (drivers/virtio/virtio_pci.c) nieprawidłowo waliduje długość zdolności (cap_len) odczytywanej z przestrzeni konfiguracyjnej PCI. Brak walidacji w czasie wykonywania (asercja jest wyłączona w wersjach produkcyjnych) prowadzi do zapisu poza bufor na stosie jądra podczas inicjalizacji urządzenia.
- CVE-2026-11809Niskie
Klient OTA UpdateHub w Zephyr OS zawiera podatność polegającą na odczycie niezainicjalizowanej pamięci sterty oraz odczycie poza granicami bufora w funkcji z_impl_updatehub_probe(). Serwer UpdateHub może wysłać spreparowaną odpowiedź, która po nieudanym pierwszym parsowaniu JSON powoduje użycie niezakończonego znakiem NUL bufora metadata_copy, co prowadzi do odczytu poza przydzieloną pamięcią i może wywołać awarię urządzenia.
- CVE-2026-11368Wysokie
Podatność w warstwie ATT stosu Bluetooth w Zephyr OS prowadzi do użycia po zwolnieniu (use-after-free) pamięci kanału. Gdy zdalne urządzenie rozłączy się podczas trwającego ruchu ATT, opóźnione wywołanie zwrotne może odwołać się do zwolnionego już kanału, co powoduje awarię systemu lub potencjalne uszkodzenie pamięci.
- CVE-2026-10677Średnie
W Zephyr OS (wersje od v1.12.0 do v4.4.1) weryfikator syscall CONFIG_USERSPACE w funkcji z_vrfy_k_poll() nie zwalnia pamięci w przypadku błędu walidacji. Atakujący może wielokrotnie wywołać wyciek pamięci, prowadząc do wyczerpania puli jądra i odmowy usługi.
- CVE-2026-10674Średnie
W Zephyr OS (od v2.5.0) sterownik NXP LPUART wyłącza zegary peryferium przed walidacją konfiguracji. Nieobsługiwane parametry powodują błąd bez ponownego włączenia zegara, co prowadzi do twardego błędu i awarii systemu.
- CVE-2026-10666Wysokie
W funkcji parse_ipv4() w Zephyr OS występuje podatność przepełnienia bufora stosu. Atakujący może wysłać spreparowany adres IP z długim sufiksem po dwukropku, co powoduje kopiowanie danych poza przydzielony bufor 17-bajtowy. Problem istnieje od wersji v1.9.0 do v4.4.0 i może prowadzić do awarii systemu lub potencjalnego przejęcia kontroli.
- CVE-2026-10656Średnie
Sterownik kontrolera USB MAX32xxx (udc_max32.c) w Zephyr OS nie sprawdza, czy bufor punktu końcowego jest NULL-em w procedurach obsługi zakończenia transferu OUT i IN. Gdy host USB wyśle nowy pakiet SETUP podczas trwającego transferu EP0, może dojść do wyczerpania FIFO i przetworzenia nieaktualnego zdarzenia, co prowadzi do dereferencji wskaźnika bliskiego NULL i awarii urządzenia.
- CVE-2026-10648Średnie
W Zephyr OS w funkcji mcumgr_serial_process_frag() wywołanie net_buf_reset() na wyniku smp_packet_alloc() następuje przed sprawdzeniem wartości NULL. Gdy pula pakietów MCUmgr (domyślnie 4 bufory) zostanie wyczerpana, smp_packet_alloc() zwraca NULL, a próba zapisu przez wskaźnik NULL powoduje awarię systemu.
Oryginalny opis (angielski, źródło NVD)
Zephyr's DNS resolver detects mDNS (.local) queries in dns_resolve_name_internal() (subsys/net/lib/dns/resolve.c) with memcmp(strrchr(query, '.'), ".local", 7), which always reads a fixed 7 bytes from the suffix pointer. When the resolved hostname's final label is shorter than 7 bytes (e.g. names ending in .org, .com, .net, .io, or a trailing dot), the comparison reads 1-2 bytes past the string's NUL terminator. The hostname (query) is the caller-supplied name passed through the standard getaddrinfo()/dns_get_addr_info()/dns_resolve_name() path and is influenceable by operators or remote inputs (server names from configuration, parsed URLs, or app-facing interfaces). On a tightly-sized buffer with no slack (for example a userspace getaddrinfo call where the hostname is copied with k_usermode_string_alloc_copy to exactly strlen+1 bytes), the over-read crosses the allocation boundary; if that boundary is unmapped (guard page, memory-domain boundary under MPU, or an address sanitizer) the over-read faults, causing a denial of service. The over-read bytes are never returned, so there is no information disclosure. The flaw is compiled only when CONFIG_MDNS_RESOLVER is enabled, exists since v1.10.0, and is fixed by replacing the fixed-length memcmp with a NUL-safe strcmp(ptr, ".local").
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

