Katalog CVE

CVE-2026-10667

WysokieCVSS 7.8
Opublikowano: Zaktualizowano: Przetłumaczono: NVD NIST

Prawdopodobieństwo exploitacji (EPSS)

Niskie ryzyko
0.11%

Percentyl 1 - wyżej niż 1% wszystkich znanych CVE

Streszczenie

W systemie Zephyr wykryto podatność polegającą na użyciu po zwolnieniu (use-after-free) w mechanizmie śledzenia dynamicznych obiektów jądra. Problem występuje w konfiguracjach SMP z włączoną przestrzenią użytkownika i dynamicznymi obiektami, gdzie niezsynchronizowane operacje na liście dwukierunkowej mogą prowadzić do naruszenia pamięci jądra.

Ocena ryzyka

Nieuprzywilejowany wątek użytkownika może wykorzystać tę podatność do eskalacji uprawnień lub wywołania odmowy usługi (DoS) poprzez uszkodzenie struktur jądra. Ryzyko jest szczególnie istotne w systemach wielordzeniowych z włączoną obsługą przestrzeni użytkownika.

Rekomendacja

Należy niezwłocznie zaktualizować system Zephyr do wersji zawierającej poprawkę (po v4.4.0), która synchronizuje wszystkie modyfikacje listy obj_list pod jednym spinlockiem lists_lock. W międzyczasie można rozważyć wyłączenie opcji CONFIG_DYNAMIC_OBJECTS lub CONFIG_SMP w konfiguracji jądra.

Inne podatności w Zephyr

Zobacz wszystkie
Oryginalny opis (angielski, źródło NVD)

Zephyr's dynamic kernel-object tracking (kernel/userspace/userspace.c, formerly kernel/userspace.c) maintains a doubly-linked list (obj_list) of dynamically allocated kernel objects. Iteration over this list in k_object_wordlist_foreach() was performed under lists_lock using the SAFE iterator (which caches the next node), but list removal and freeing of nodes was performed under different, disjoint spinlocks: objfree_lock in k_object_free() and obj_lock in unref_check(). On an SMP system, while one CPU iterated obj_list under lists_lock, another CPU could unlink and k_free() the dyn_obj node that the iterator had cached as its next pointer, causing the iterator to dereference freed kernel memory (use-after-free / dangling list traversal). All of the racing operations are reachable from unprivileged user-mode threads via system calls: k_object_alloc/k_object_alloc_size and k_object_release drive removals through unref_check() (under obj_lock), while k_thread_abort and thread creation drive the iteration through k_thread_perms_all_clear()/k_thread_perms_inherit() (under lists_lock). A deprivileged user thread on a CONFIG_SMP + CONFIG_USERSPACE build can therefore corrupt the kernel's object-tracking structures across the userspace security boundary, yielding kernel memory corruption (potential privilege escalation) or a kernel crash (denial of service). The fix removes objfree_lock and serializes every obj_list modification under lists_lock, including holding it across find+remove in k_object_free() and around unref_check() in k_thread_perms_clear(). Affects CONFIG_SMP+CONFIG_USERSPACE+CONFIG_DYNAMIC_OBJECTS configurations; the defect dates to the 2019 spinlockification (commit 8a3d57b6cc6, first released in v1.14.0) and shipped through v4.4.0.

Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS