Instituto Nacional de ciberseguridad. Sección Incibe
Instituto Nacional de Ciberseguridad. Sección INCIBE-CERT

Vulnerabilidad en zephyr de zephyrproject (CVE-2026-10667)

Gravedad CVSS v3.1:
ALTA
Tipo:
CWE-416 Utilización después de liberación
Fecha de publicación:
12/07/2026
Última modificación:
24/10/2026

Descripción

El seguimiento dinámico de objetos del kernel de Zephyr (kernel/userspace/userspace.c, anteriormente kernel/userspace.c) mantiene una lista doblemente enlazada (obj_list) de objetos del kernel asignados dinámicamente. La iteración sobre esta lista en k_object_wordlist_foreach() se realizaba bajo lists_lock usando el iterador SAFE (que almacena en caché el siguiente nodo), pero la eliminación de la lista y la liberación de nodos se realizaban bajo diferentes spinlocks disjuntos: objfree_lock en k_object_free() y obj_lock en unref_check(). En un sistema SMP, mientras una CPU iteraba obj_list bajo lists_lock, otra CPU podía desenlazar y k_free() el nodo dyn_obj que el iterador había almacenado en caché como su puntero siguiente, haciendo que el iterador desreferenciara memoria del kernel liberada (uso después de liberación / recorrido de lista colgante). Todas las operaciones de carrera son accesibles desde hilos de modo de usuario sin privilegios a través de llamadas al sistema: k_object_alloc/k_object_alloc_size y k_object_release impulsan las eliminaciones a través de unref_check() (bajo obj_lock), mientras que k_thread_abort y la creación de hilos impulsan la iteración a través de k_thread_perms_all_clear()/k_thread_perms_inherit() (bajo lists_lock). Un hilo de usuario desprivilegiado en una compilación CONFIG_SMP + CONFIG_USERSPACE puede, por lo tanto, corromper las estructuras de seguimiento de objetos del kernel a través del límite de seguridad del espacio de usuario, lo que resulta en corrupción de memoria del kernel (potencial escalada de privilegios) o un fallo del kernel (denegación de servicio). La solución elimina objfree_lock y serializa cada modificación de obj_list bajo lists_lock, incluyendo mantenerlo durante la búsqueda+eliminación en k_object_free() y alrededor de unref_check() en k_thread_perms_clear(). Afecta a las configuraciones CONFIG_SMP+CONFIG_USERSPACE+CONFIG_DYNAMIC_OBJECTS; el defecto data de la ’spinlockificación’ de 2019 (commit 8a3d57b6cc6, lanzado por primera vez en v1.14.0) y se distribuyó hasta v4.4.0.

Productos y versiones vulnerables

CPE Desde Hasta
cpe:2.3:o:zephyrproject:zephyr:*:*:*:*:*:*:*:* 1.14.0 (incluyendo) 4.4.1 (incluyendo)