CVE-2026-12233

The PSA Protected Storage credential backend (subsys/net/lib/tls_credentials/tls_credentials_trusted.c) declared its credential-store mutex as a plain zero-filled static struct k_mutex credential_lock; and never called k_mutex_init() on it. A statically zero-filled k_mutex has an uninitialized wait queue (its dlist head/tail are NULL instead of the self-referential sentinels that k_mutex_init/K_MUTEX_DEFINE install). The uncontended lock path does not touch the wait queue, so the defect is latent and serialized use behaves correctly. When two execution contexts contend on the lock, k_mutex_lock() pends the blocking thread on the wait queue via z_pend_curr(), which calls sys_dlist_append() on the zeroed list and dereferences a NULL tail pointer (tail->next = node), faulting the kernel. The lock is held during TLS handshake credential loading and by all credential add/get/delete operations, so a deployment performing concurrent TLS handshakes (for example a server handling multiple simultaneous connections from a remote peer) or a credential-management operation concurrent with a handshake can trigger the dereference. The impact is a denial of service: a deterministic kernel panic / device reset on the first contention. There is no memory corruption beyond the NULL dereference and no confidentiality or integrity impact; mutual exclusion on the fast path remains correct. Exposure is limited to builds with CONFIG_TLS_CREDENTIALS_BACKEND_PROTECTED_STORAGE enabled (PSA Protected Storage / TF-M platforms); the default volatile RAM backend initializes its lock correctly and is unaffected. The fix initializes the mutex statically with K_MUTEX_DEFINE(credential_lock), providing a valid wait queue so the contended path no longer touches a NULL list.
Configurations

No configuration.

History

23 Oct 2026, 20:10

Type Values Removed Values Added
Summary
  • (es) El backend de credenciales de PSA Protected Storage (subsys/net/lib/tls_credentials/tls_credentials_trusted.c) declaró su mutex de almacén de credenciales como una struct k_mutex credential_lock estática simple rellenada con ceros; y nunca llamó a k_mutex_init() sobre ella. Un k_mutex rellenado con ceros estáticamente tiene una cola de espera no inicializada (su cabeza/cola de dlist son NULL en lugar de los centinelas autorreferenciales que instalan k_mutex_init/K_MUTEX_DEFINE). La ruta de bloqueo sin contención no toca la cola de espera, por lo que el defecto es latente y el uso serializado se comporta correctamente. Cuando dos contextos de ejecución compiten por el bloqueo, k_mutex_lock() suspende el hilo bloqueante en la cola de espera a través de z_pend_curr(), que llama a sys_dlist_append() en la lista con ceros y desreferencia un puntero de cola NULL (tail -> next = node), provocando un fallo en el kernel. El bloqueo se mantiene durante la carga de credenciales del handshake TLS y por todas las operaciones de añadir/obtener/eliminar credenciales, por lo que un despliegue que realice handshakes TLS concurrentes (por ejemplo, un servidor que maneja múltiples conexiones simultáneas de un par remoto) o una operación de gestión de credenciales concurrente con un handshake puede desencadenar la desreferencia. El impacto es una denegación de servicio: un pánico de kernel determinista / reinicio del dispositivo en la primera contención. No hay corrupción de memoria más allá de la desreferencia NULL y ningún impacto en la confidencialidad o integridad; la exclusión mutua en la ruta rápida sigue siendo correcta. La exposición se limita a las compilaciones con CONFIG_TLS_CREDENTIALS_BACKEND_PROTECTED_STORAGE habilitado (plataformas PSA Protected Storage / TF-M); el backend de RAM volátil predeterminado inicializa su bloqueo correctamente y no se ve afectado. La solución inicializa el mutex estáticamente con K_MUTEX_DEFINE(credential_lock), proporcionando una cola de espera válida para que la ruta con contención ya no toque una lista NULL.

Information

Published : 2026-08-12 05:17

Updated : 2026-10-23 20:10


NVD link : CVE-2026-12233

Mitre link : CVE-2026-12233

CVE.ORG link : CVE-2026-12233


JSON object : View

Products Affected

No product.

CWE
CWE-665

Improper Initialization