Katalog CVE

CVE-2026-13217

ŚrednieCVSS 5.9
Opublikowano: Zaktualizowano: Przetłumaczono: NVD NIST

Prawdopodobieństwo exploitacji (EPSS)

Niskie ryzyko
0.51%

Percentyl 41 - wyżej niż 41% wszystkich znanych CVE

Streszczenie

Podatność w kliencie OCPP 1.6 w Zephyr (subsys/net/lib/ocpp/ocpp.c) powoduje dereferencję wskaźnika NULL podczas przetwarzania wiadomości CALLRESULT. Serwer może wysłać uid bez separatora '-', co prowadzi do wywołania atoi(NULL) i awarii wątku czytnika OCPP. Luka jest osiągalna zdalnie przez złośliwy lub skompromitowany system centralny lub atak MITM na połączeniu ws://.

Ocena ryzyka

Ryzyko polega na zdalnej odmowie usługi (DoS) punktu ładowania na platformach Zephyr z ochroną pamięci (MMU/MPU) lub włączoną detekcją wyjątku NULL. Atak nie wymaga uwierzytelnienia poza istniejącym połączeniem serwerowym, co umożliwia zakłócenie działania infrastruktury ładowania pojazdów elektrycznych.

Rekomendacja

Zaleca się natychmiastowe zastosowanie poprawki producenta, która zabezpiecza oba wywołania atoi() (dla pierwszego i drugiego tokena). Dodatkowo należy rozważyć wymuszenie połączeń TLS (wss://) dla OCPP, aby ograniczyć ryzyko ataków MITM.

Powiązane podatności

Oryginalny opis (angielski, źródło NVD)

The OCPP 1.6 client in subsys/net/lib/ocpp/ocpp.c reconstructs a session handle and PDU id from the uid field of a CALLRESULT message. In ocpp_process_server_msg() the code calls atoi(strtok_r(uid, "-", &tmp)) without checking the strtok_r return value. When the server-supplied uid is empty or contains no - delimiter, strtok_r() returns NULL and atoi(NULL) dereferences a NULL pointer, which is undefined behaviour. The uid originates from network data: parse_rpc_msg() in subsys/net/lib/ocpp/ocpp_j.c JSON-parses a frame received from the OCPP central system over TCP/WebSocket and copies the server-controlled string into the local buffer. A malicious or compromised central system, or a man-in-the-middle on a non-TLS ws:// connection, can return a malformed uid to reach the defect. No authentication beyond the existing server connection (or MITM position) is required, and the reconstructed pointer is membership-validated by ocpp_session_is_valid(), so the impact is limited to the NULL dereference rather than arbitrary pointer use. On Zephyr targets that trap access to address 0 (MMU/MPU platforms or CONFIG_NULL_POINTER_EXCEPTION_DETECTION), the dereference faults inside the OCPP reader thread and invokes the fatal handler, producing a remote denial of service of the charge point; on bare targets where address 0 is readable the call returns 0 and is benign, so the impact is availability-only and platform-conditional. The applied fix guards only the first atoi(); the second strtok_r(NULL, "-", &tmp) followed by pdu = atoi(buf) in the same function remains unguarded and the identical NULL dereference is still reachable from the same network input when the uid has a first token but no second --delimited token. A complete fix should validate the second token as well.

Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS