Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain user-mode thread execution on SMP device
-
DeliverySpawn two threads calling k_object_alloc(K_OBJ_THREAD) concurrently
-
ExploitRace unlocked thread_idx_alloc() bitmap RMW
-
ExecutionBoth threads receive identical tidx
-
PersistACL grant to first thread implicitly extends to aliasing thread
-
ImpactAccess protected kernel objects without authorization
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V15 - Secure Coding and Architecture Concurrency control, locking
MITRE ATT&CK
1 technique across 1 tactic: Privilege Escalation The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Three Kconfig build-time flags must all be active: CONFIG_USERSPACE=y (enables user-mode thread isolation and the __syscall k_object_alloc entry point), CONFIG_DYNAMIC_OBJECTS=y (enables runtime object allocation from which the vulnerable thread_idx_alloc() is called), and CONFIG_SMP=y (enables multi-core scheduling, which is the prerequisite for the concurrent RMW race). Single-core builds with CONFIG_SMP=n are not vulnerable regardless of other settings. The attacker must have the ability to execute user-mode threads on the target device - at minimum low-privilege local code execution (consistent with CVSS PR:L). No network-facing entry path exists; this is strictly an intra-device, user-space-to-kernel-ACL race. The race window is narrow (AC:H), requiring two threads to enter thread_idx_alloc() with sufficient concurrency to observe the same free bitmap bit before either clears it. |
| Impact | The CVSS 7.0 vector AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H accurately characterizes the exploitation barrier: the attacker must already hold user-mode thread execution on the device (PR:L, AV:L), and the race window is narrow enough to require precise concurrent scheduling on an SMP core (AC:H). Despite SSVC rating Technical Impact as total - reflecting that a successful race breaks all userspace ACL enforcement - SSVC simultaneously marks Exploitation: none and Automatable: no, consistent with the 0.08% EPSS score at the 0th percentile. These signals together indicate a serious architectural flaw whose real-world exploitation probability is currently very low: it requires local code execution already, a non-default SMP+USERSPACE+DYNAMIC_OBJECTS build configuration, and precise timing. The gap between high technical impact and near-zero exploitation signals that this is a design-priority hardening fix rather than an active incident-response item for most operators. No conflicting signals were identified; CVSS vector and description are fully consistent. |
| Exploit ScenarioDerived | An attacker with user-mode thread execution on a Zephyr SMP device spawns two threads that simultaneously invoke k_object_alloc(K_OBJ_THREAD), racing the unlocked thread_idx_alloc() bitmap so both receive the same tidx. Once aliased, any subsequent k_object_access_grant() call on a kernel resource (such as a network socket, semaphore, or pipe) targeting the first thread automatically grants identical access to the aliasing thread, allowing the second thread to interact with kernel objects it was never explicitly authorized to access. No public proof-of-concept code is known at time of analysis. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv2 – Aug 12, 2026
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.
Earlier versions of this analysis (1)
A race condition in Zephyr RTOS's userspace thread index allocation allows two user-mode threads on SMP systems to obtain the same permission index, defeating dynamic object ACL isolation. The defect, reachable via k_object_alloc(K_OBJ_THREAD) syscall, is present in all releases up to 4.4.0 when CONFIG_USERSPACE, CONFIG_DYNAMIC_OBJECTS, and CONFIG_SMP are enabled. No active exploitation is reported, and a vendor patch is available.
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.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
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.
Know when Zephyr gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
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
3DescriptionNVD
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).
Executive ViewAI
Zephyr RTOS versions 2.0.0 through 4.4.0 contain a critical ACL isolation bypass in symmetric multiprocessing builds that allows concurrent user-mode threads to alias each other's kernel permissions, defeating the intended userspace security model. Organizations relying on Zephyr's kernel isolation guarantees face a complete loss of that protective control if affected versions are deployed in production systems.
Apply vendor patch.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
Race conditions occur when multiple concurrent requests exploit the brief time gap between checking a condition and acting upon it (TOCTOU - Time of Check, Time of Use).
Potential off-by-one buffer overflow vulnerability in the Zephyr fuse file system. Rated critical severity (CVSS 10.0),
An out-of-bounds write in the Zephyr RTOS DNS resolver (dns_unpack_name()) lets a crafted DNS response corrupt memory on
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
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
EUVD-2026-49045
NVD
CVE.org
EPSS
Vulnrichment
GitHub
VulDB
Exploit-DB