CVE-2026-12363 in Zephyrinformazioni

Riassunto

di VulDB • 14/08/2026

Il servizio LoRaWAN Fragmented Data Block Transport (subsys/lorawan/services/frag_transport.c) non convalida il contatore dei frammenti in un comando DATA_FRAGMENT ricevuto prima di inoltrarlo al decoder configurato. In frag_transport_package_callback(), il valore frag_counter = hdr->frag_index_n & 0x3FFF viene preso direttamente dal payload downlink e passato al decoder, che deriva un indice dell'array e uno sfasamento della flash come frag_counter - 1. I frammenti DataFragment sono indicizzati a partire da 1 (1-indexed), quindi un frag_counter pari a 0 provoca un underflow in quell'aritmetica.

Con il decoder predefinito Semtech/LoRaMAC-node, questo raggiunge FragDecoder.FragNbMissingIndex[fragCounter - 1] = 0; in FragDecoderProcess(), dove fragCounter - 1 valuta -1 e scrive uno zero uint16_t fuori dai limiti dell'array, proprio prima di esso e nello stato della matrice di recupero MatrixM2B adiacente dell'oggetto decoder statico (CWE-787). Una scrittura complementare deriva un sfasamento flash incontrollato ("wild"), ma quel percorso viene rifiutato dal controllo dei limiti di flash_area_write(). Il decoder a basso consumo integrato nel codice sorgente (frag_dec()) non è corrotto: i suoi accessi all'array bit e alla flash fuori intervallo vengono intercettati dai controlli dei limiti sys_bitarray_ e flash_area_.

Il gestore è il callback downlink registrato per la porta di trasporto della frammentazione, raggiungibile ogni volta che esiste una sessione di frammentazione attiva; pertanto, il byte scatenante è un input di rete LoRaWAN/FUOTA influenzabile dall'attaccante. Attivarlo richiede downlink autenticati (chiavi di sessione MAC LoRaWAN o un server di rete o FUOTA malizioso/compromesso) e una sessione di frammentazione attiva. L'impatto è contenuto: corruzione dello stato del decoder e negazione della sessione di aggiornamento firmware (FUOTA), anziché una corruzione controllabile della memoria o esecuzione di codice. La correzione aggiunge un controllo a livello di trasporto che rifiuta frag_counter == 0, chiudendo il difetto per entrambi i backend dei decoder.

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

Responsabile

Zephyr

Prenotare

16/06/2026

Divulgazione

14/08/2026

Moderazione

accettato

CPE

pronto

EPSS

0.00000

KEV

no

Attività

basso

Fonti

Interested in the pricing of exploits?

See the underground prices here!