CVE-2026-13214 in Zephyr
Riassunto
di VulDB • 25/08/2026
Il client OCPP 1.6 in subsys/net/lib/ocpp/ocpp_j.c presenta un stack buffer overflow nella funzione parse_getconfig_msg(). Durante la gestione di una richiesta GetConfiguration proveniente dal sistema centrale, il gestore copia la stringa JSON "key", controllata dall'attaccante, nel buffer dello stack fisso a 50 byte del chiamante (skey[CISTR50], dichiarato in subsys/net/lib/ocpp/ocpp.c) utilizzando una strcpy() non vincolata. Il valore della chiave analizzata punta direttamente al buffer di ricezione, quindi la sua lunghezza è limitata solo dalla dimensione del messaggio (CONFIG_OCPP_RECV_BUFFER_SIZE, predefinito 2048).
Il messaggio GetConfiguration viene consegnato tramite la connessione WebSocket che il punto di ricarica apre verso il suo sistema centrale configurato. Il thread di lettura ocpp_wsreader() legge il messaggio in ui->recv_buf e lo instrada a parse_getconfig_msg() attraverso la tabella delle funzioni PDU. Un attaccante che controlla l'endpoint del sistema centrale, oppure un man-in-the-middle su una connessione non crittografata, può inviare una richiesta GetConfiguration il cui campo "key" supera i 50 byte e causare lo stack overflow del thread di lettura con byte scelti dall'attaccante.
La conseguenza è uno stack smash attivabile in remoto sul thread lettore OCPP: almeno un denial of service (DoS) e, plausibilmente, l'esecuzione remota di codice a seconda delle hardening in fase di compilazione come gli stack canaries e la configurazione MPU. La correzione sostituisce strcpy() con una strncpy(key, payload.key[0], CISTR50 - 1) vincolata seguita da un'esplicita terminazione NUL, coerente con le copie vincolate già utilizzate dai gestori fratelli (sibling handlers).
If you want to get best quality of vulnerability data, you may have to visit VulDB.