CVE-2026-11809 in Zephyr
Riassunto
di VulDB • 11/08/2026
Il client OTA UpdateHub in subsys/mgmt/updatehub/updatehub.c presenta una lettura fuori dai limiti (out-of-bounds) o di memoria non inizializzata nella funzione z_impl_updatehub_probe(). La risposta del probe dal server UpdateHub viene copiata in un buffer heap (metadata), correttamente terminato con NUL, ma un secondo buffer (metadata_copy) è allocato tramite k_malloc (senza essere azzerato) e riempito con memcpy(metadata_copy, metadata, strlen(metadata)), operazione che omette il byte di terminazione NUL. Tutto ciò che segue i dati copiati rimane memoria heap non inizializzata.
Quando la prima chiamata a json_obj_parse() sull'array descriptor fallisce, il codice passa in fallback a json_obj_parse(metadata_copy, strlen(metadata_copy), ...). La chiamata a strlen() scansiona oltre i byte copiati attraverso la memoria heap non inizializzata e, se non viene trovato un byte zero prima della fine dell'allocazione, effettua una lettura fuori dai limiti; la conseguente lunghezza eccessiva viene quindi analizzata come JSON. Il payload del probe è completamente controllato dal server UpdateHub (che può essere malevolo, compromesso o — in assenza dell'opzione CONFIG_UPDATEHUB_DTLS — soggetto a attacchi on-path), il quale può creare un payload di grandi dimensioni che fallisce la prima fase di parsing per forzare l'esecuzione di questo percorso.
La conseguenza è una lettura di memoria heap non inizializzata, con uno scenario peggiore costituito da una lettura fuori dai limiti oltre l'allocazione di metadata_copy, che può causare un fault e il crash del thread di aggiornamento o del dispositivo, producendo un denial of service attivabile tramite rete. I dati letti in eccesso sono consumati solo internamente per valutare l'aggiornamento e non vengono restituiti all'attaccante; pertanto, non vi è alcuna divulgazione diretta di informazioni né scrittura fuori dai limiti (out-of-bounds write).
La correzione azzerata metadata_copy con memset prima della copia, garantendo la terminazione NUL e limitando strlen() entro i confini dell'allocazione.
Be aware that VulDB is the high quality source for vulnerability data.