CVE-2026-10848
WysokieCVSS 7.0Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 9 - wyżej niż 9% wszystkich znanych CVE
Streszczenie
W kliencie OCPP 1.6 w Zephyr RTOS wykryto podatność polegającą na odczycie poza zakresem bufora podczas parsowania ramek WAMP RPC. Funkcja extract_string_field() używa strncpy bez gwarancji null-terminacji, co prowadzi do odczytu poza 128-bajtowym buforem i potencjalnego zapisu null poza zakresem. Podatność może być zdalnie wykorzystana przez złośliwy serwer centralny lub atakującego w sieci.
Ocena ryzyka
Atakujący może spowodować denial of service (DoS) poprzez wysłanie specjalnie spreparowanej ramki RPC, co może doprowadzić do awarii systemu. Ryzyko jest ograniczone do systemów z jawnie włączoną opcją CONFIG_OCPP, ale w przypadku wdrożeń produkcyjnych może być krytyczne.
Rekomendacja
Należy natychmiast zastosować poprawkę zastępującą ręczny parser funkcją json_mixed_arr_parse() oraz jawnie null-terminować bufor uid. Zaleca się aktualizację do wersji Zephyr RTOS zawierającej fix lub ręczne zaimportowanie łatki.
Inne podatności w Zephyr RTOS
Zobacz wszystkie- CVE-2026-13480Niskie
Podatność w obsłudze fragmentów danych LoRaWAN TS004 w Zephyr RTOS (subsys/lorawan/services/frag_transport.c) polega na braku walidacji długości pozostałych bajtów przed odczytem w handlerze frag_transport_package_callback(). Atakujący, znający klucze sesyjne, może spowodować odczyt poza buforem RxPayload (do ~232 bajtów), kopiując dane z pamięci statycznej do buforów dekodera i obrazu FUOTA.
- CVE-2026-13213Średnie
Podatność w usłudze Hearing Access Service (HAS) w Zephyr RTOS pozwala zdalnie (przez Bluetooth) wywołać awarię (crash) urządzenia peryferyjnego HAS. Problem występuje, gdy wcześniej sparowany klient łączy się ponownie w oknie czasowym przed rejestracją usługi przez aplikację, co prowadzi do asercji lub dereferencji pustego wskaźnika.
- CVE-2026-12633Wysokie
Podatność w kodzie obsługi sąsiedztwa IPv6 (subsys/net/ip/ipv6_nbr.c) w Zephyr RTOS. Funkcja handle_ra_6co() nie ogranicza pola context_len z opcji 6CO w komunikatach Router Advertisement, co prowadzi do przepełnienia bufora i zapisu poza pamięcią (memset). Atakujący z tej samej sieci może wysłać spreparowany pakiet, powodując awarię systemu.
- CVE-2026-9771Wysokie
Podatność w wywołaniu systemowym flash_copy() w Zephyr RTOS (z włączonym CONFIG_USERSPACE) pozwala nieuprzywilejowanemu wątkowi na przekazanie sfałszowanych wskaźników do struktur urządzeń flash. Brak walidacji obiektów urządzeń (src_dev, dst_dev) przed dereferencją umożliwia wywołanie dowolnego kodu w trybie nadzorcy, co prowadzi do eskalacji uprawnień poza piaskownicę użytkownika.
- CVE-2026-12364Wysokie
Podatność w Zephyr RTOS dotyczy weryfikatora wywołań systemowych z_vrfy_z_log_msg_static_create(), który nie sprawdzał argumentów przekazywanych do funkcji jądra. Umożliwia to nieuprzywilejowanemu wątkowi użytkownika przekazanie dowolnych wskaźników i długości, co prowadzi do odczytu pamięci jądra i awarii systemu.
- CVE-2026-12363Średnie
Podatność w usłudze transportu bloków danych LoRaWAN (frag_transport.c) nie sprawdza licznika fragmentów w odebranej komendzie DATA_FRAGMENT przed przekazaniem jej do dekodera. Wartość frag_counter równa 0 powoduje niedomiar arytmetyki (frag_counter - 1), co prowadzi do zapisu poza zakresem (CWE-787) w domyślnym dekoderze Semtech/LoRaMAC-node, uszkadzając stan dekodera i przerywając sesję aktualizacji oprogramowania (FUOTA).
- CVE-2026-12233Średnie
Podatność w backendzie PSA Protected Storage dla poświadczeń TLS (subsys/net/lib/tls_credentials/tls_credentials_trusted.c) polega na niezainicjalizowanym mutexie (k_mutex) — zadeklarowanym jako statyczna struktura wypełniona zerami, bez wywołania k_mutex_init(). Przy braku rywalizacji o blokadę działa to poprawnie, ale przy jednoczesnym dostępie z dwóch wątków dochodzi do wyłuskania pustego wskaźnika (NULL) w kolejce oczekujących, co powoduje panikę jądra i reset urządzenia.
- CVE-2026-11812Niskie
Podatność w podsystemie UpdateHub (subsys/mgmt/updatehub/updatehub.c) polega na braku synchronizacji dostępu do współdzielonej struktury ctx. Jednoczesne operacje (tło autohandlera i wywołania użytkownika) mogą zapisać poza tablicą fds[1], nadpisując sąsiednie pola struktury, co prowadzi do uszkodzenia stanu wewnętrznego i odmowy usługi w ścieżce aktualizacji oprogramowania.
- CVE-2026-10849Wysokie
W kliencie zarządzania urządzeniami hawkBit w Zephyr RTOS występuje podatność na zapis poza dozwolonym obszarem sterty (heap-based out-of-bounds write). Bufor przechowujący odpowiedź HTTP nie rezerwuje miejsca na znak null, co przy odpowiedniej długości odpowiedzi prowadzi do zapisu jednego bajtu zerowego poza przydzieloną pamięcią.
- CVE-2026-10682Średnie
W Zephyr RTOS w wersjach od v3.3.0 do v4.4.1, funkcja weryfikatora przestrzeni użytkownika z_vrfy_log_filter_set() wykonuje porównanie ze znakiem dla parametru src_id, co pozwala na przekazanie ujemnej wartości. Prowadzi to do odczytu i zapisu poza zakresem w tablicy log_dynamic, co może być wykorzystane do eskalacji uprawnień w trybie nadzorcy.
Oryginalny opis (angielski, źródło NVD)
The OCPP 1.6 client in subsys/net/lib/ocpp parsed inbound WAMP RPC frames in parse_rpc_msg() (subsys/net/lib/ocpp/ocpp_j.c) using a hand-rolled helper, extract_string_field(), that copied the message's uid and action fields with strncpy(out_buf, token + 1, outlen - 1) and then scanned the result with strchr(out_buf, '"'). Because strncpy does not NUL-terminate the destination when the source is at least outlen - 1 (127) bytes long, the subsequent strchr reads past the 128-byte destination buffer into adjacent stack memory; if a " byte is found beyond the buffer, a one-byte out-of-bounds NUL write also occurs. A related defect in extract_payload() runs strchr/strrchr over the receive buffer, which may not be NUL-terminated when a maximal-length frame fills it. The parsed bytes come directly from the OCPP central-system server over a websocket: the reader thread fills recv_buf via websocket_recv_msg() and calls parse_rpc_msg() on each inbound DATA frame (subsys/net/lib/ocpp/ocpp.c). A malicious or compromised central server, or an on-path attacker (OCPP is commonly deployed over plain ws://), can send an RPC frame whose uid or action field is 127+ bytes with no closing quote, triggering the out-of-bounds access. The primary impact is a remotely triggerable denial of service: the unbounded scan can fault on an unmapped page, and the stray NUL write can corrupt adjacent stack state. The over-read data is not reflected to the peer, so disclosure is limited. The feature is EXPERIMENTAL and must be explicitly enabled (CONFIG_OCPP). The fix replaces the manual parser with the bounds-respecting json_mixed_arr_parse() and copies the extracted uid with an explicitly NUL-terminated buffer, eliminating both over-reads.

