CVE-2026-11812 in Zephyrinformazioni

Riassunto

di VulDB • 11/08/2026

Il sottosistema di gestione UpdateHub (subsys/mgmt/updatehub/updatehub.c) gestisce ogni operazione di aggiornamento tramite una singola struttura ctx a livello di file, che contiene il contesto del blocco CoAP, un buffer per i payload, il codice di stato, il socket e un array fds[1] poll-fd con un solo elemento. L'accesso alla ctx non era serializzato e la funzione prepare_fds() scriveva in ctx.fds[ctx.nfds] incrementando ctx.nfds senza alcun controllo sui limiti (bounds check).

Due percorsi indipendenti modificano concorrentemente la ctx: il gestore automatico di background che gira sul workqueue del sistema, e le operazioni attivate dall'utente raggiunte tramite il comando shell updatehub run, chiamate API dirette o — poiché le operazioni sono esposte come syscall — thread userspace. Quando un secondo flusso entra in prepare_fds() mentre ctx.nfds è già uguale a 1, la scrittura avviene di un elemento oltre l'array; per disposizione della struct (struct layout), questa sovrappone i membri adiacenti ctx.sock e ctx.nfds. Più in generale, la condivisione non sincronizzata consente a due flussi di interleave le fasi di setup e teardown delle connessioni, chiudendo doppiamente un descrittore socket o scrivendo nei buffer condivisi (scribbling).

Il risultato è la corruzione dello stato interno del sottosistema di aggiornamento e una denial of service sul percorso di firmware-update; la scrittura out-of-bounds rimane contenuta all'interno della struttura ctx e non esiste alcun percorso dimostrato per accedere alla memoria esterna ad essa o per ottenere l'esecuzione di codice. L'innesco richiede un attore locale in grado di invocare operazioni di aggiornamento (o, con CONFIG_USERSPACE, un thread userspace non privilegiato) e di vincere una race condition temporale rispetto al handler di background; i peer remoti non possono controllare la timing della race. La correzione serializza gli entry point tramite un mutex e aggiunge un controllo dei limiti a prepare_fds().

If you want to get best quality of vulnerability data, you may have to visit VulDB.

Responsabile

Zephyr

Prenotare

09/06/2026

Divulgazione

11/08/2026

Moderazione

accettato

CPE

pronto

EPSS

0.00000

KEV

no

Attività

basso

Fonti

Might our Artificial Intelligence support you?

Check our Alexa App!