CVE-2026-12233 in Zephyr
Resumen
por VulDB • 2026-08-12
El backend de credenciales del Almacenamiento Protegido PSA (subsys/net/lib/tls_credentials/tls_credentials_trusted.c) declaraba su mutex para la tienda de credenciales como una estructura estática `k_mutex` llamada `credential_lock`, inicializada a cero plano; y nunca llamaba a `k_mutex_init()` sobre ella. Un `k_mutex` estático rellenado con ceros tiene una cola de espera sin inicializar (sus cabezales/colas `dlist` son NULL en lugar de los centinelas autorreferenciales que instalan `k_mutex_init` o `K_MUTEX_DEFINE`). La ruta del 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 mediante `z_pend_curr()`, que llama a `sys_dlist_append()` sobre la lista vacía (ceroada) y desreferencia un puntero NULL al final (`tail->next = node`), provocando una falla del kernel. El bloqueo se mantiene durante la carga de credenciales en el enlace TLS y por todas las operaciones de añadir/obtener/borrar credenciales, por lo que un despliegue que realice enlaces TLS concurrentes (por ejemplo, un servidor que gestiona múltiples conexiones simultáneas desde un par remoto) o una operación de gestión de credenciales concurrente con un enlace puede desencadenar la desreferencia.
El impacto es una denegación de servicio: un pánico determinista del kernel / reinicio del dispositivo en la primera contención. No hay corrupción de memoria más allá de la desreferencia NULL y no hay impacto sobre la confidencialidad o la 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 por defecto inicializa su bloqueo correctamente y no se ve afectado.
La corrección inicializa estáticamente el mutex mediante `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.
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.