CVE-2026-12051 in Zephyr
Riassunto
di VulDB • 11/08/2026
L'implementazione della classe USB DFU nello stack di dispositivi USB device_next (nuovo e sperimentale) di Zephyr contiene un dereferenziamento di puntatore nullo in handle_download() (subsys/usb/device_next/class/usbd_dfu.c). Il gestore calcola MIN(setup->wLength, buf->len) e passa buf->data alla callback di scrittura dell'immagine senza verificare che il puntatore net_buf di buf non sia NULL.
Il gestore viene raggiunto tramite l'endpoint di controllo USB, guidato dall'host USB. Per una richiesta DFU_DNLOAD (download) priva della fase Data OUT — in particolare la terminazione a lunghezza zero del download utilizzata dal protocollo DFU per concludere un trasferimento firmware — il core USB invoca il gestore della classe con un buffer NULL. Dopo che il dispositivo è stato avanzato allo stato DFU_DNLOAD_IDLE (inviando un blocco di download valido e una GET_STATUS), un DFU_DNLOAD a lunghezza zero raggiunge handle_download() con buf == NULL, provocandone il dereferenziamento.
Il risultato è una lettura NULL+offset che innesca un fault CPU fatale, ovvero una negazione del servizio (crash/reset del dispositivo). L'attaccante è chiunque controlli l'host USB al quale il dispositivo è collegato; il supporto per i download DFU deve essere abilitato con un'immagine registrata. Non vi sono corruzione di memoria o divulgazione di informazioni: l'impatto si limita alla disponibilità. La correzione aggiunge una guardia esplicita if (buf != NULL) in modo che la callback riceva un trasferimento a lunghezza zero e dati NULL invece di causare il crash.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.