CVE-2026-10848 in Zephyr
Zusammenfassung
von VulDB • 02.08.2026
Der OCPP 1.6-Client in subsys/net/lib/ocpp parst eingehende WAMP-RPC-Frames in parse_rpc_msg() (subsys/net/lib/ocpp/ocpp_j.c) unter Verwendung eines selbst geschriebenen Hilfsprogramms extract_string_field(), das die uid- und action-Felder der Nachricht mit strncpy(out_buf, token + 1, outlen - 1) kopiert und anschließend das Ergebnis mit strchr(out_buf, '"') durchsucht. Da strncpy das Ziel nicht NUL-terminiert, wenn die Quelle mindestens outlen - 1 (127) Bytes lang ist, liest das nachfolgende strchr über den 128-Byte-Zielbuffer hinaus in benachbarten Stack-Speicher; wird ein " Zeichen jenseits des Buffers gefunden, tritt zudem eine One-Byte-Out-of-Bounds-NUL-Schreiboperation auf. Ein verwandter Fehler in extract_payload() führt strchr/strrchr über den Empfangspuffer aus, der möglicherweise nicht NUL-terminiert ist, wenn ein Frame maximaler Länge diesen füllt.
Die geparseten Bytes stammen direkt vom OCPP-Central-System-Server über einen WebSocket: Der Reader-Thread füllt recv_buf via websocket_recv_msg() und ruft parse_rpc_msg() für jeden eingehenden DATA-Frame auf (subsys/net/lib/ocpp/ocpp.c). Ein böswilliger oder kompromittierter Central-Server oder ein Angreifer im Übertragungspfad (OCPP wird häufig über plain ws:// bereitgestellt) kann einen RPC-Frames senden, dessen uid- oder action-Feld 127+ Bytes lang ist und kein schließendes Anführungszeichen enthält, wodurch der Out-of-Bounds-Zugriff ausgelöst wird.
Die primäre Auswirkung ist ein remote auslösbarer Denial of Service: Der unbeschränkte Scan kann auf einer nicht zugewiesenen Seite einen Fehler verursachen (Fault), und die fehlerhafte NUL-Schreiboperation kann den benachbarten Stack-Status beschädigen. Die übergelesenen Daten werden nicht an den Peer zurückgesendet, sodass eine Offenlegung begrenzt ist. Diese Funktion ist EXPERIMENTELL und muss explizit aktiviert sein (CONFIG_OCPP). Der Fix ersetzt den manuellen Parser durch json_mixed_arr_parse(), das die Grenzen respektiert, und kopiert den extrahierten uid-Wert in einen explizit NUL-terminierten Puffer, wodurch sowohl Überlesungen als auch Out-of-Bounds-Schreiboperationen eliminiert werden.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.