Severity by source
AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
Local SMP race requires existing thread execution (PR:L, AV:L) and precise timing (AC:H); successful aliasing grants full kernel-object ACL bypass (C:H/I:H/A:H), scope unchanged.
Primary rating from Vendor (zephyr).
CVSS VectorNVD
Lifecycle Timeline
6DescriptionNVD
In Zephyr's userspace dynamic-objects subsystem, thread_idx_alloc() in kernel/userspace/userspace.c allocated a new thread permission index from the global _thread_idx_map[] bitmap without holding lists_lock.
On SMP systems, two user-mode threads invoking the k_object_alloc(K_OBJ_THREAD) syscall concurrently can both observe the same low free bit, perform the same non-atomic RMW to clear it, and return the identical tidx.
The two newly created K_OBJ_THREAD objects are then assigned the same thread_id, so the two user threads alias a single bit position in every kernel object's perms[] bitfield: any subsequent grant of access on a kernel object to one thread is implicitly a grant to the other, defeating userspace ACL isolation. A secondary lost-update window between the unlocked &=~BIT() in alloc and the locked |= BIT() in thread_idx_free() can also leak entries from the thread-index pool.
The defect is reachable from any user-mode thread via the unrestricted __syscall k_object_alloc and is gated on CONFIG_USERSPACE, CONFIG_DYNAMIC_OBJECTS, and CONFIG_SMP. The flaw was introduced when the per-thread permission index was added in 2018 and is present in every release up to and including v4.4.0. Fixed by holding lists_lock across the bitmap RMW and the permissions clear (and inlining the obj_list traversal that previously took the lock itself).
AnalysisAI
Userspace ACL isolation is defeated in Zephyr RTOS v2.0.0 through v4.4.0 on SMP builds due to a missing spinlock in thread_idx_alloc(), allowing two concurrently executing user-mode threads to receive the same permission-index (tidx) and subsequently alias each other's ACL bit across every kernel object. Any kernel object access grant intended exclusively for one thread is silently extended to the aliasing thread, nullifying the CONFIG_USERSPACE isolation model. No public exploit or active exploitation (CISA KEV) is known at time of analysis, and SSVC marks automatable: no, but the technical impact is assessed as total, warranting prioritized patching for affected SMP deployments.
Technical ContextAI
The defect is in kernel/userspace/userspace.c within thread_idx_alloc(), which allocates entries from the global _thread_idx_map[] bitmap to assign unique per-thread permission indices (tidx). Every kernel object in Zephyr's userspace model maintains a perms[] bitfield indexed by tidx; granting a thread access to an object sets its tidx bit. Because thread_idx_alloc() performed a non-atomic read-modify-write on _thread_idx_map[] without holding lists_lock, two threads executing k_object_alloc(K_OBJ_THREAD) concurrently on an SMP system could each observe the same lowest free bit, both clear it independently, and both receive the identical tidx - a textbook CWE-362 (Concurrent Execution Using Shared Resource with Improper Synchronization). A secondary race between the unlocked &=~BIT() in alloc and the locked |= BIT() in thread_idx_free() could additionally leak index entries from the pool. The fix (commit 862ea2fbbeb2ccdf8ff994b03e2e3b4405f2c37d) acquires k_spin_lock(&lists_lock) at the top of thread_idx_alloc(), covering the entire bitmap RMW and permission-clearing traversal, and inlines the obj_list walk (previously lock-acquiring itself) to avoid deadlock. CPE cpe:2.3:a:zephyrproject:zephyr:*:*:*:*:*:*:*:* covers all affected releases.
RemediationAI
Upgrade to Zephyr v4.5.0 or a release incorporating commit 862ea2fbbeb2ccdf8ff994b03e2e3b4405f2c37d (https://github.com/zephyrproject-rtos/zephyr/commit/862ea2fbbeb2ccdf8ff994b03e2e3b4405f2c37d); the fix version is inferred from the EUVD upper bound of <4.5.0 rather than independently verified against a tagged release, so operators should confirm their target release includes the fix commit. For deployments that cannot immediately upgrade, disabling CONFIG_SMP=n in the build eliminates the SMP concurrency condition entirely but carries a significant performance regression on multi-core hardware. Disabling CONFIG_DYNAMIC_OBJECTS=n prevents the vulnerable k_object_alloc(K_OBJ_THREAD) syscall path but removes runtime kernel object allocation capability, which may break application functionality. Restricting the use of k_object_alloc(K_OBJ_THREAD) to only fully trusted user threads via application-level policy reduces attack surface but does not close the race for threads permitted to call it. Consult the Zephyr security advisory at https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-j693-5rh5-8g8h for official mitigation guidance.
Potential off-by-one buffer overflow vulnerability in the Zephyr fuse file system. Rated critical severity (CVSS 10.0),
Possible variant of CVE-2021-3434 in function le_ecred_reconf_req. Rated critical severity (CVSS 9.8), this vulnerabilit
Unchecked user input length in /subsys/net/l2/wifi/wifi_shell.c can cause buffer overflows. Rated critical severity (CVS
Potential buffer overflow vulnerability in the Zephyr CAN bus subsystem. Rated critical severity (CVSS 9.8), this vulner
Integer Underflow in 6LoWPAN IPHC Header Uncompression in Zephyr. Rated critical severity (CVSS 9.8), this vulnerability
Buffer overflow in Zephyr USB DFU DNLOAD. Rated critical severity (CVSS 9.8), this vulnerability is remotely exploitable
DOS: Incorrect 802154 Frame Validation for Omitted Source / Dest Addresses. Rated critical severity (CVSS 9.8), this vul
zephyr-rtos version 1.12.0 contains a NULL base pointer reference vulnerability in sys_ring_buf_put(), sys_ring_buf_get(
Potential buffer overflow vulnerabilities n the Zephyr Bluetooth subsystem. Rated critical severity (CVSS 9.6), this vul
Buffer overflow in Zephyr RTOS dns_unpack_name() function causing OOB writes. PoC available.
The documentation specifies that the BT_GATT_PERM_READ_LESC and BT_GATT_PERM_WRITE_LESC defines for a Bluetooth characte
Potential buffer overflows in the Bluetooth subsystem due to asserts being disabled in /subsys/bluetooth/host/hci_core.c
Same weakness CWE-362 – Race Condition
View allSame technique Race Condition
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-49045