Skip to main content

Zephyr RTOS CVE-2026-10681

| EUVDEUVD-2026-49045 HIGH
Race Condition (CWE-362)
2026-07-25 zephyr
7.0
CVSS 3.1 · NVD
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Obtain user-mode thread execution on SMP device
  2. Delivery
    Spawn two threads calling k_object_alloc(K_OBJ_THREAD) concurrently
  3. Exploit
    Race unlocked thread_idx_alloc() bitmap RMW
  4. Execution
    Both threads receive identical tidx
  5. Persist
    ACL grant to first thread implicitly extends to aliasing thread
  6. Impact
    Access 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.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.1% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv2 – 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)
v1 Jul 27, 2026 - 13:31 CVSS 6.5

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

Zephyr 2.0.0 <4.5.0

Affected Packages

euvd zephyr fix: 4.5.0

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

Vendor (zephyr) PRIMARY MEDIUM
NVD 7.0 HIGH
AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
vuln.today AI 7.0 HIGH

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.

3.1 AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
4.0 AV:L/AC:H/AT:P/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (zephyr).

CVSS VectorNVD

Attack Vector
Local
Attack Complexity
High
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

Lifecycle Timeline

3
Analysis Updated
Aug 12, 2026 - 15:13 vuln.today
v2 - CVSS changed
Severity Changed
Aug 12, 2026 - 15:07 NVD
MEDIUM HIGH
CVSS changed
Aug 12, 2026 - 15:07 NVD
6.5 (MEDIUM) 7.0 (HIGH)

DescriptionNVD

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

Why It Matters

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.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.1%
Top 100% exploitable
Prevalence
Low
niche embedded RTOS; SMP+userspace configs uncommon in production
Social Media
1
Sightings
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment CIRCL GitHub VulDB

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.1%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
None
System Exposure· derived
Small
Automatable
No
Human Impact
High
Technical Impact
Total

Priority Score

35
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +35
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

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).

More in Zephyr

View all
CVE-2023-4260 CRITICAL POC
10.0 Sep 27

Potential off-by-one buffer overflow vulnerability in the Zephyr fuse file system. Rated critical severity (CVSS 10.0),

CVE-2026-1678 CRITICAL POC
9.8 Mar 05

An out-of-bounds write in the Zephyr RTOS DNS resolver (dns_unpack_name()) lets a crafted DNS response corrupt memory on

CVE-2023-5055 CRITICAL POC
9.8 Nov 21

Possible variant of CVE-2021-3434 in function le_ecred_reconf_req. Rated critical severity (CVSS 9.8), this vulnerabilit

CVE-2023-4257 CRITICAL POC
9.8 Oct 13

Unchecked user input length in /subsys/net/l2/wifi/wifi_shell.c can cause buffer overflows. Rated critical severity (CVS

CVE-2023-3725 CRITICAL POC
9.8 Oct 06

Potential buffer overflow vulnerability in the Zephyr CAN bus subsystem. Rated critical severity (CVSS 9.8), this vulner

CVE-2021-3323 CRITICAL POC
9.8 Oct 12

Integer Underflow in 6LoWPAN IPHC Header Uncompression in Zephyr. Rated critical severity (CVSS 9.8), this vulnerability

CVE-2021-3625 CRITICAL POC
9.8 Oct 05

Buffer overflow in Zephyr USB DFU DNLOAD. Rated critical severity (CVSS 9.8), this vulnerability is remotely exploitable

CVE-2021-3319 CRITICAL POC
9.8 Oct 05

DOS: Incorrect 802154 Frame Validation for Omitted Source / Dest Addresses. Rated critical severity (CVSS 9.8), this vul

CVE-2018-1000800 CRITICAL POC
9.8 Sep 06

zephyr-rtos version 1.12.0 contains a NULL base pointer reference vulnerability in sys_ring_buf_put(), sys_ring_buf_get(

CVE-2023-4264 CRITICAL POC
9.6 Sep 27

Potential buffer overflow vulnerabilities n the Zephyr Bluetooth subsystem. Rated critical severity (CVSS 9.6), this vul

CVE-2024-1638 CRITICAL POC
9.1 Feb 19

The documentation specifies that the BT_GATT_PERM_READ_LESC and BT_GATT_PERM_WRITE_LESC defines for a Bluetooth characte

CVE-2023-5753 HIGH POC
8.8 Oct 25

Potential buffer overflows in the Bluetooth subsystem due to asserts being disabled in /subsys/bluetooth/host/hci_core.c

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy