CVE-2026-12630 in Zephyr
Riassunto
di VulDB • 18/08/2026
Il codice di decompressione dell'IP Header Compression (IPHC) per 6LoWPAN in Zephyr contiene una lettura fuori dai limiti (out-of-bounds read) nella funzione get_ihpc_inlined_size() (subsys/net/ip/6lo.c). La dimensione inline della destinazione viene cercata nella tabella da_inline_size_table, che ha 13 voci, utilizzando un indice costruito a partire dai bit M, DAC e DAM della parola di dispatch IPHC ricevuta (iphc & NET_6LO_IPHC_DA_MASK), un valore a 4 bit compreso tra 0 e 15. Le combinazioni riservate 13, 14 e 15 non sono soggette a controlli sui limiti e leggono oltre la fine della tabella.
La parola iphc è presa direttamente dal frame ricevuto, e get_ihpc_inlined_size() viene raggiunta per ogni frame in ingresso 6LoWPAN tramite net_6lo_uncompress() dal percorso di ricezione IEEE 802.15.4 (subsys/net/l2/ieee802154/ieee802154_6lo.c e ieee802154_6lo_fragment.c). Un attaccante non autenticato sulla radio o sul link adiacente può quindi creare un frame il cui nibble della modalità di indirizzamento della destinazione seleziona un indice fuori dai limiti, senza necessità di privilegi o interazione con l'utente.
Il valore fuori dai limiti diventa la inline_size calcolata, che guida poi la ricostruzione dell'intestazione prima del controllo sulla lunghezza del buffer: viene utilizzata per dereferenziare *(pkt->buffer->data + sizeof(iphc) + inline_size) e per calcolare una differenza di tipo size_t che può andare in underflow, portando a un'ulteriore lettura fuori dai limiti del buffer del pacchetto e a una decompressione non valida. L'impatto pratico è una lettura fuori dai limiti attivabile tramite la radio / denial-of-service sul ricevitore; il byte trapelato non viene restituito all'attaccante. La correzione rifiuta qualsiasi indice di destinazione oltre i limiti della tabella, interrompendo l'elaborazione del frame malformato.
If you want to get best quality of vulnerability data, you may have to visit VulDB.