CVE-2026-12051
ŚrednieCVSS 4.6Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 6 - wyżej niż 6% wszystkich znanych CVE
Streszczenie
Implementacja klasy USB DFU w nowym (eksperymentalnym) stosie USB device_next w Zephyrze zawiera dereferencję wskaźnika NULL w funkcji handle_download(). Atakujący kontrolujący host USB może wywołać awarię urządzenia (odmowa usługi) poprzez wysłanie żądania DFU_DNLOAD z zerową długością.
Ocena ryzyka
Ryzyko polega na możliwości spowodowania awarii lub restartu urządzenia przez atakującego z dostępem do portu USB, co prowadzi do niedostępności usług.
Rekomendacja
Zaleca się zastosowanie poprawki dodającej sprawdzenie czy wskaźnik buf nie jest NULL oraz aktualizację Zephyra do wersji zawierającej fix.
Inne podatności w Zephyr
Zobacz wszystkie- CVE-2026-19673Wysokie
Podatność w funkcji ethernet_recv() w subsys/net/l2/ethernet/ethernet.c w stosie sieciowym Zephyr. Gdy ethertype to 0x8100, a na interfejsie włączony jest VLAN, bufor odbieranej ramki jest reinterpretowany jako 18-bajtowa struktura net_eth_vlan_hdr bez ponownego sprawdzenia długości, co powoduje odczyt poza buforem i podniesienie hdr_len do 18. Pojedyncza nieuwierzytelniona ramka o długości 14-17 bajtów z ethertype 0x8100 wyzwala błąd.
- CVE-2026-10772Nieznane
To CVE zostało odrzucone jako duplikat. Opisana podatność dotyczyła błędnego sprawdzania uprawnień w ścieżkach GATT notify/indicate w stosie Bluetooth Zephyr, ale została już wcześniej zgłoszona jako CVE-2026-2411.
- CVE-2026-10676Nieznane
Identyfikator CVE-2026-10676 został wycofany, ponieważ analiza wykazała, że zgłoszona wada nie jest dostępna w żadnej wydanej wersji Zephyr. W każdej wspieranej wersji poprawna wartość jest korygowana przed jej użyciem.
- CVE-2026-5067Krytyczne
System operacyjny Zephyr zawiera lukę w ścieżce uaktualnienia WebSocket serwera HTTP. Nieuwierzytelniony atakujący zdalny może wywołać uszkodzenie pamięci, wysyłając spreparowany nagłówek Sec-WebSocket-Key. Kopiowanie nagłówka do bufora o stałym rozmiarze nie gwarantuje zakończenia NUL, co prowadzi do odczytu i zapisu poza zakresem na stosie.
- CVE-2026-19935Wysokie
Podatność w stosie Bluetooth LE Zephyr pozwala zdalnemu, nieuwierzytelnionemu atakującemu na użycie po zwolnieniu (use-after-free) w obsłudze kanałów L2CAP CoC z dynamicznym PSM. Wysyłając ramkę danych, a następnie żądanie rozłączenia, atakujący może spowodować, że kolejka pracy systemu przetworzy pracę wskazującą na zwolniony kanał, co prowadzi do naruszenia pamięci lub uszkodzenia kolejki pracy.
- CVE-2026-19740Średnie
Implementacja procedury LLCP w kontrolerze Bluetooth LE Zephyra zatrzymuje węzeł odbiorczy po akceptacji LL_PHY_UPDATE_IND, ale ścieżki obsługi nieprawidłowych PDU nie zwalniają tego węzła przed zakończeniem procedury. Atakujący z zasięgu radiowego może wysłać sekwencję PDU, która powoduje naruszenie asercji (awarię urządzenia) lub wyciek węzłów z puli odbiorczej, prowadząc do niedostępności Bluetooth do czasu restartu.
- CVE-2026-19669Wysokie
Podatność w mechanizmie weryfikacji wywołań systemowych Zephyra (z_vrfy_fuel_gauge_get_props() i z_vrfy_fuel_gauge_set_props()) polega na alokacji tablic o zmiennym rozmiarze (VLA) na stosie jądra na podstawie niezwalidowanego argumentu len pochodzącego od użytkownika. Brak sprawdzenia zakresu przed alokacją i kopiowaniem pozwala wątkowi w trybie użytkownika (CONFIG_USERSPACE) na zapis poza zakresem w trybie nadzorcy z kontrolowaną przez atakującego długością i zawartością danych.
- CVE-2026-19577Wysokie
W podsystemie IPv6 stosu Zephyr stwierdzono podatność na odczyt poza zakresem pamięci w funkcji net_route_ipv6_packet(). Problem wynika z braku sprawdzenia, czy wpis w pamięci podręcznej sąsiadów (neighbor cache) posiada adres warstwy łącza, zanim zostanie on użyty. Atakujący z tej samej sieci może wymusić stan nierozwiązanego sąsiada i doprowadzić do odczytu pamięci poza tablicą adresów, co może skutkować awarią systemu (panic) lub wyciekiem danych.
- CVE-2026-19186Wysokie
W stosie IEEE 802.15.4 w Zephyrze funkcja ieee802154_decipher_data_frame() nie sprawdza, czy ramka jest wystarczająco długa, zanim obliczy długość danych. Odejmowanie długości nagłówka i tagu uwierzytelniającego od długości ramki może się zawinąć (underflow), co prowadzi do odczytu i zapisu poza buforem pakietu. Atakujący w zasięgu radiowym może wysłać krótką ramkę, powodując uszkodzenie pamięci i awarię systemu.
- CVE-2026-18415Średnie
W funkcji ieee802154_send() w stosie sieciowym Zephyr pakiet wychodzący jest kopiowany do stałego bufora nadawczego o rozmiarze 125 bajtów bez sprawdzenia długości. Gdy włączona jest fragmentacja 6LoWPAN, ale fragmentacja nie jest wymagana, brak weryfikacji rozmiaru pozwala na zapis poza buforem. Luka jest osiągalna przez gniazda NET_AF_PACKET powiązane z interfejsem 802.15.4, w tym przez nieuprzywilejowany wątek aplikacji w buildach CONFIG_USERSPACE.
Oryginalny opis (angielski, źródło NVD)
The USB DFU class implementation in Zephyr's new (experimental) device_next USB device stack contains a NULL pointer dereference in handle_download() (subsys/usb/device_next/class/usbd_dfu.c). The handler computes MIN(setup->wLength, buf->len) and passes buf->data to the image write callback without checking that the buf net_buf pointer is non-NULL. The handler is reached over the USB control endpoint, driven by the USB host. For a DFU_DNLOAD (download) request with no Data OUT stage — notably the zero-length terminating download that the DFU protocol uses to end a firmware transfer — the USB core invokes the class handler with a NULL buffer. After the device has been advanced to the DFU_DNLOAD_IDLE state (by sending one valid download block and a GET_STATUS), a zero-length DFU_DNLOAD reaches handle_download() with buf == NULL, dereferencing it. The result is a NULL+offset read that triggers a fatal CPU fault, i.e. a denial of service (device crash/reset). The attacker is whatever controls the USB host the device is attached to; DFU download support must be enabled with a registered image. There is no memory corruption or information disclosure — impact is limited to availability. The fix adds an explicit if (buf != NULL) guard so the callback receives a zero-length, NULL-data transfer instead of crashing.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

