CVE-2026-10677
ŚrednieCVSS 6.5Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 1 - wyżej niż 1% wszystkich znanych CVE
Streszczenie
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.
Ocena ryzyka
Nieuwierzytelniony wątek użytkownika może wyczerpać współdzieloną pamięć jądra, powodując awarię całego systemu.
Rekomendacja
Zaktualizuj Zephyr OS do wersji zawierającej poprawkę (po v4.4.1). Ogranicz dostęp do syscall k_poll dla niezaufanych wątków.
Inne podatności w Zephyr OS
Zobacz wszystkie- 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-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-10657Niskie
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.
- 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.
- CVE-2026-10642Średnie
Sterownik UART PL011 w Zephyr OS (drivers/serial/uart_pl011.c) zawiera nieskończoną pętlę w funkcji pl011_irq_tx_enable(), która powoduje zawieszenie wątku przy włączonej kontroli przepływu CTS. Gdy urządzenie zewnętrzne wycofa sygnał CTS, sterownik nie może opróżnić FIFO nadawczego, a pętla nigdy się nie kończy, prowadząc do odmowy usługi (CWE-835).
Oryginalny opis (angielski, źródło NVD)
The CONFIG_USERSPACE syscall verifier z_vrfy_k_poll() in kernel/poll.c allocates a kernel-side copy of the user-supplied k_poll_event[] via z_thread_malloc() and then validates each event's object handle. Before this fix, validation used K_OOPS(K_SYSCALL_OBJ(...)) inline inside the loop, which kills the calling thread without freeing events_copy. A user thread can pass num_events >= 1 with a forged object handle to leak the allocation; because newly spawned user threads inherit the parent's resource_pool (kernel/thread.c), an attacker spawns sacrificial threads to repeat the leak until the shared kernel heap is exhausted. Once depleted, legitimate kernel allocations from that pool (k_queue alloc nodes, k_msgq buffers, future k_poll calls, etc.) fail, causing a system-level denial of service. The fix replaces each inline K_OOPS with a conditional goto oops_free so the buffer is freed before the thread is killed. Affects Zephyr releases from v1.12.0 (when k_poll was first exposed to user mode) through v4.4.1.

