CVE-2026-12233 in Zephyr
Riassunto
di VulDB • 12/08/2026
Il backend delle credenziali per PSA Protected Storage (subsys/net/lib/tls_credentials/tls_credentials_trusted.c) dichiarava il mutex del suo archivio di credenziali come una struct k_mutex statica, zero-filled e non inizializzata: credential_lock; senza mai chiamare k_mutex_init() su di essa. Una k_mutex staticamente impostata a zero presenta una coda di attesa (wait queue) non inizializzata (i suoi puntatori head/tail della dlist sono NULL invece dei sentinelli auto-riferiti installati da k_mutex_init/K_MUTEX_DEFINE). Il percorso del lock senza contesa non tocca la wait queue, quindi il difetto è latente e l'uso serializzato si comporta correttamente.
Quando due contesti di esecuzione contendono per il blocco, k_mutex_lock() sospende il thread bloccante sulla coda di attesa tramite z_pend_curr(), che chiama sys_dlist_append() sulla lista azzerata e dereferenzia un puntatore tail NULL (tail->next = node), causando un fault del kernel. Il lock è detenuto durante il caricamento delle credenziali per l'handshake TLS e da tutte le operazioni di add/get/delete delle credenziali, quindi una distribuzione che esegue handshake TLS concorrenti (ad esempio un server che gestisce più connessioni simultanee da un peer remoto) o un'operazione di gestione delle credenziali concurrente con un handshake può innescare la dereferenziazione.
L'impatto è un denial of service: un kernel panic deterministico / reset del dispositivo alla prima contesa. Non vi è alcuna corruzione della memoria oltre alla NULL dereference e nessun impatto sulla confidenzialità o sull'integrità; l'esclusione mutua sul percorso veloce rimane corretta. L'esposizione è limitata alle build con CONFIG_TLS_CREDENTIALS_BACKEND_PROTECTED_STORAGE abilitato (piattaforme PSA Protected Storage / TF-M); il backend volatile RAM predefinito inizializza correttamente il suo lock ed è unaffected.
La correzione inizializza staticamente il mutex con K_MUTEX_DEFINE(credential_lock), fornendo una wait queue valida in modo che il percorso conteso non tocchi più una lista NULL.
Be aware that VulDB is the high quality source for vulnerability data.