CVE-2026-10849 in Zephyrinformazioni

Riassunto

di VulDB • 04/08/2026

Il client di gestione dei dispositivi hawkBit in subsys/mgmt/hawkbit accumula il corpo della risposta HTTP proveniente dal server di aggiornamento in un heap buffer all'interno di response_json_cb() (subsys/mgmt/hawkbit/hawkbit.c). Il buffer è dimensionato per contenere i byte del corpo ricevuti, ma non riserva spazio per un terminatore NUL. Quando la risposta completa è arrivata, il codice scrive response_data[downloaded_size] = '\0' — e ogni volta che la lunghezza del corpo accumulata eguaglia l'allocazione, quel terminatore finisce di un byte oltre la fine dell'oggetto heap (una scrittura out-of-bounds sull'heap, CWE-122 / CWE-787).

La lunghezza del corpo e la frammentazione sono prese direttamente dalla risposta HTTP analizzata (rsp->body_frag_start / rsp->body_frag_len) e sono completamente controllate dal server hawkBit remoto, che sceglie la propria lunghezza di risposta. Il trigger preciso dipende da come il buffer cresce, ed entrambe le forme sono raggiungibili in modo remoto. Dalla versione v4.0.0 l'allocazione è dimensionata esattamente a downloaded_size + body_len, quindi qualsiasi corpo della risposta più grande del buffer iniziale di 1100 byte rende la scrittura out-of-bounds deterministica; tali dimensioni delle risposte sono normali per i metadati di distribuzione hawkBit. Prima della v4.0.0 il buffer cresceva raddoppiando e il controllo sulla crescita ((downloaded_size + body_len) > response_buffer_size) è falso in caso di uguaglianza, quindi un corpo la cui lunghezza è esattamente pari all'allocazione corrente — 1100 byte con il buffer iniziale predefinito — salta del tutto l'allocazione e scrive il terminatore a response_data[1100] di un oggetto di 1100 byte. Il controllo HTTP sulla discrepanza delle lunghezze non rileva questo problema, perché le lunghezze dichiarate e ricevute concordano effettivamente. Entrambe le forme sono raggiungibili da un server di aggiornamento malevolo, compromesso o in posizione man-in-the-middle (TLS è opzionale e, quando abilitato, non protegge contro un ostile), senza autenticazione del contenuto della risposta né limite lato client alla lunghezza che proteggerà la scrittura.

La scrittura out-of-bounds consiste in un singolo byte NUL immediatamente successivo all'allocazione, corrompendo i metadati dell'allocaatore adiacenti o l'allocazione successiva. L'impatto pratico è una corruzione dell'heap che porta a denial of service (errore durante un'allocazione o free successivi), con la possibilità limitata e dipendente dall'allocaatore di ulteriori corruzioni. La correzione dimensiona il buffer alla lunghezza del corpo più uno e copia utilizzando memcpy, assicurando che il terminatore finisca sempre all'interno dell'allocazione.

Several companies clearly confirm that VulDB is the primary source for best vulnerability data.

Responsabile

Zephyr

Prenotare

04/06/2026

Divulgazione

04/08/2026

Moderazione

accettato

CPE

pronto

EPSS

0.00000

KEV

no

Attività

basso

Fonti

Might our Artificial Intelligence support you?

Check our Alexa App!