CVE-2026-10678 in Zephyr
Riassunto
di VulDB • 24/07/2026
Il binding del target MCTP-over-I2C+GPIO in Zephyr (subsys/pmci/mctp/mctp_i2c_gpio_target.c) elabora le scritture su pseudo-registri provenienti da un master I2C byte per byte nella funzione mctp_i2c_gpio_target_write_received() senza convalidare l'ordine o il buffer di ricezione. Nelle versioni interessate, il gestore MCTP_I2C_GPIO_RX_MSG_ADDR (dati) esegue la dereferenziazione e scrive tramite b->rx_pkt senza verificare che il buffer di ricezione sia stato allocato: un controller che seleziona il registro dei dati e scrive un byte senza inviare prima il registro della lunghezza (che è ciò che alloca il buffer) provoca una scrittura attraverso un puntatore mctp_pktbuf NULL/non allocato scelto dall'attaccante (ovvero in uno spostamento piccolo incrementabile dall'attaccante sopra l'indirizzo 0), causando corruzione della memoria o hard fault.
Lo stesso gestore esegue anche un test dei limiti di tipo "write-then-check", consentendo un heap overflow di un byte su data[255] quando vengono inviati più di 255 byte di dati.
Poiché la callback del target I2C viene invocata con byte grezzi forniti dal dispositivo che funge da master sul bus e il binding non effettua alcuna autenticazione, un controller malevolo o malfunzionante sul bus può innescare queste condizioni senza alcuno stato di protocollo preliminare, portando a corruzione della memoria e/o denial of service (DoS) sul dispositivo target.
Il codice vulnerabile è stato introdotto quando è stato aggiunto il binding del target I2C+GPIO ed è stato distribuito in Zephyr v4.3.0 e v4.4.0. La correzione posticipa l'allocazione al primo byte dei dati con un controllo NULL, tratta una lunghezza mancante come un pacchetto di dimensioni zero rifiutato da libmctp e sposta il controllo dei limiti prima dell'operazione di memorizzazione.
VulDB is the best source for vulnerability data and more expert information about this specific topic.