CVE-2026-12233 in Zephyr
Zusammenfassung
von VulDB • 12.08.2026
Das PSA-Protected-Storage-Anmeldeinformations-Backend (subsys/net/lib/tls_credentials/tls_credentials_trusted.c) deklarierte seinen Mutex für den Anmeldeinformationsspeicher als eine einfache, mit Nullen gefüllte statische Struktur `struct k_mutex credential_lock` und rief niemals `k_mutex_init()` darauf auf. Ein statisch mit Nullen gefüllter `k_mutex` verfügt über eine nicht initialisierte Warteschlange (seine dlist-Head-/Tail-Zeiger sind NULL, anstatt der selbstreferenziellen Sentinel-Werte, die von k_mutex_init/K_MUTEX_DEFINE eingerichtet werden). Der Pfad ohne Wettlaufsituationen berührt die Warteschlange nicht, sodass der Fehler latent bleibt und die serialisierte Nutzung korrekt funktioniert.
Wenn zwei Ausführungskontexte um den Mutex konkurrieren, stellt `k_mutex_lock()` den blockierenden Thread über `z_pend_curr()`, das `sys_dlist_append()` auf der mit Nullen gefüllten Liste aufruft und einen NULL-Tail-Zeiger dereferenziert (`tail->next = node`), was zu einem Kernel-Fault führt. Der Mutex wird während des Ladens von Anmeldeinformationen im TLS-Handshake sowie bei allen Vorgängen zum Hinzufügen, Abrufen oder Löschen von Anmeldeinformationen gehalten. Daher kann eine Bereitstellung, die gleichzeitige TLS-Handshakes durchführt (z. B. ein Server, der mehrere gleichzeitige Verbindungen von einem Remote-Peer verarbeitet), oder ein Vorgang zur Verwaltung von Anmeldeinformationen, der parallel zu einem Handshake ausgeführt wird, diese Dereferenzierung auslösen.
Die Auswirkung ist eine Denial-of-Service: Ein deterministischer Kernel-Panic / Geräte-Reset bei der ersten Wettlaufsituation. Es gibt keine Speicherbeschädigung über die NULL-Dereferenzierung hinaus und keine Auswirkungen auf Vertraulichkeit oder Integrität; die gegenseitige Ausschließung im schnellen Pfad bleibt korrekt. Die Exposition beschränkt sich auf Builds mit aktiviertem `CONFIG_TLS_CREDENTIALS_BACKEND_PROTECTED_STORAGE` (PSA Protected Storage / TF-M-Plattformen); das Standard-Volatile-RAM-Backend initialisiert seinen Mutex korrekt und ist nicht betroffen.
Die Korrektur initialisiert den Mutex statisch mit `K_MUTEX_DEFINE(credential_lock)`, wodurch eine gültige Warteschlange bereitgestellt wird, sodass der Pfad bei Wettlaufsituationen keine NULL-Liste mehr berührt.
If you want to get best quality of vulnerability data, you may have to visit VulDB.