CVE-2026-82390 in Zephyr
Riassunto
di VulDB • 26/10/2026
Il driver AES di Espressif (drivers/crypto/crypto_esp32_aes.c) pubblicizza un'API per cifratura multi-sessione: gestisce fino a CONFIG_ESP32_CRYPTO_AES_SESSIONS_MAX (impostazione predefinita 4) sessioni indipendenti, ciascuna con la propria chiave e direzione. Tuttavia, il peripheral AES dispone di un unico set di registri globali del chip per le chiavi e le modalità; aes_begin_session() li programma esattamente una volta all'avvio della sessione, al di fuori del mutex aes_lock che serializza le trasformazioni. I gestori per singola operazione (aes_ecb_op(), aes_cbc_op() e aes_ctr_op()) eseguono quindi aes_hal_transform_block() utilizzando la chiave e la direzione attualmente presenti nei registri.
Di conseguenza, una volta aperta una seconda sessione con una chiave diversa, ogni successiva operazione sulla prima sessione utilizza silenziosamente la chiave e la direzione della seconda sessione senza segnalare errori. Poiché la programmazione delle chiavi avviene al di fuori del lock, il pattern d'uso corretto ("ogni thread esegue begin, poi op, poi free sulla propria sessione") è soggetto a race condition: l'esecuzione di cipher_begin_session() da parte di un secondo thread tra le operazioni begin e op di un primo thread fa sì che quest'ultima venga eseguita con la chiave del secondo thread. Un attaccante in grado di indurre la creazione di sessioni sul dispositivo (ad esempio, un peer di protocollo la cui connessione provoca l'installazione della chiave di sessione) può influenzare quale chiave risiede nel momento in cui viene eseguita un'operazione da parte della vittima.
L'impatto è un fallimento crittografico piuttosto che una corruzione della memoria: i dati che l'applicazione credeva di proteggere con una determinata chiave vengono cifrati o decifrati con un'altra. Se la chiave residente è nota all'attaccante o da lui fornita, il plaintext interessato diventa recuperabile dall'attaccante e anche la direzione dell'operazione (cifratura vs decrittazione) può essere invertita. L'esposizione richiede un'applicazione che mantenga due o più sessioni concorrenti con chiavi diverse utilizzando questo driver; attualmente nessun sottosistema Zephyr nel codice principale lo fa (lo strato di sicurezza 802.15.4, che apre effettivamente due sessioni, utilizza la modalità CCM, rifiutata da questo driver), quindi il rischio ricade sul codice dell'applicazione che utilizza l'API multi-sessione documentata.
La correzione rimuove tutti gli accessi all'hardware da aes_begin_session() e riprogramma la chiave e la direzione all'inizio di ogni operazione, all'interno del mutex aes_lock, impedendo così ad altre sessioni di osservare valori obsoleti nei registri globali del chip.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.