Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessRun deprivileged user thread on SMP device
-
DeliverySpawn concurrent alloc/release and thread-abort loops
-
ExploitRace iterator against node free in obj_list
-
ExecutionIterator dereferences freed dyn_obj node
-
PersistCorrupt kernel object-tracking structures
-
ImpactEscalate privileges or crash kernel
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Memory lifecycle management
MITRE ATT&CK
2 techniques across 2 tactics: Execution, Privilege Escalation The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires the target to be built with all three of CONFIG_SMP, CONFIG_USERSPACE, and CONFIG_DYNAMIC_OBJECTS enabled - remove any one and the bug is unreachable. The attacker must already be able to execute a deprivileged user-mode thread on the device and must invoke the relevant system calls: k_object_alloc/k_object_alloc_size and k_object_release (removals via unref_check()) concurrently with k_thread_abort or thread creation (iteration via k_thread_perms_all_clear()/k_thread_perms_inherit()). Limiting factors: it is a local-only attack (AV:L, PR:L - an unprivileged but authenticated on-device thread), success depends on winning a narrow SMP timing window (AC:H) so it is probabilistic rather than deterministic, and single-core or non-dynamic-object builds are entirely immune. |
| Impact | The CVSS 3.1 vector (AV:L/AC:H/PR:L/UI:N/S:C/C:H/I:H/A:H, base 7.8) is internally consistent with the description: local attack from an on-device user thread, high complexity because success depends on winning a narrow SMP race window, low privileges since the attacker is an already-running deprivileged user thread, and scope change because corruption crosses from userspace into the kernel with full C/I/A impact. Modeling with SSVC: exploitation is 'none' (no KEV, no public POC), the attack is arguably automatable (the race can be hammered in a tight loop) but the technical impact is 'total' given potential kernel privilege escalation. No EPSS score was provided in the input, and there is no KEV listing, so real-world exploitation pressure is currently unproven. The practical priority is moderate: the impact ceiling is severe (kernel compromise), but exploitation requires local code execution as a user thread AND the specific CONFIG_SMP+CONFIG_USERSPACE+CONFIG_DYNAMIC_OBJECTS build combination, which sharply narrows the exposed population. No conflicting signals were detected between the vector and the description. |
| Exploit ScenarioDerived | An attacker who can run a deprivileged user-mode thread on an SMP Zephyr device (for example, malicious or compromised application code loaded onto the target) spawns two threads that concurrently churn kernel objects - one repeatedly calling k_object_alloc/k_object_release to drive node removal, the other repeatedly triggering thread creation/abort to drive list iteration. By hammering these system calls in a tight loop they eventually win the race so the SAFE iterator dereferences a freed dyn_obj node, corrupting kernel object-tracking structures to escalate privileges or crash the kernel. No public exploit code is identified, and the high attack complexity (AC:H) reflects the timing precision required. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jul 12, 2026
Kernel memory corruption in the Zephyr RTOS (versions v1.14.0 through v4.4.0) lets an unprivileged user-mode thread corrupt the kernel's dynamic object-tracking list across the userspace security boundary. The flaw is a use-after-free race (CWE-416) in the obj_list traversal, exploitable only on builds combining CONFIG_SMP, CONFIG_USERSPACE, and CONFIG_DYNAMIC_OBJECTS, and can yield privilege escalation or a kernel crash. No public exploit identified at time of analysis; a vendor patch is available.
RemediationAI
Patch available per vendor advisory: apply the upstream fix in commit fdc42fa256b8c2a7b27790f032d5385f8058c4a9 (https://github.com/zephyrproject-rtos/zephyr/commit/fdc42fa256b8c2a7b27790f032d5385f8058c4a9), which removes objfree_lock and serializes every obj_list modification under lists_lock, holding it across find+remove in k_object_free() and around unref_check() in k_thread_perms_clear(); follow the guidance in advisory GHSA-9x5j-h3rh-x579 and upgrade to the next Zephyr release incorporating this fix. As a temporary compensating control where rebuilding is not immediately possible, disable one of the three required Kconfig options - most practically CONFIG_DYNAMIC_OBJECTS (removing dynamic kernel-object allocation) or CONFIG_SMP (running single-core), either of which closes the race; the trade-off is loss of dynamic object allocation or of multi-core scheduling respectively, which may be unacceptable for the workload. Restricting which untrusted code can run as user-mode threads also reduces exposure but does not remove the defect.
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
Zephyr is a widely used open-source real-time operating system for resource-constrained embedded and IoT devices. Its userspace subsystem (kernel/userspace/userspace.c) tracks dynamically allocated kernel objects in a doubly-linked list (obj_list). The defect is a classic locking-discipline mismatch: k_object_wordlist_foreach() iterates obj_list under lists_lock using a SAFE iterator that caches the next node, while node unlink+free happens under disjoint spinlocks (objfree_lock in k_object_free(), obj_lock in unref_check()). On SMP, one CPU can k_free() the exact dyn_obj node another CPU has cached as its next pointer, so the iterator dereferences freed memory - the CWE-416 use-after-free. CPE cpe:2.3:a:zephyrproject:zephyr identifies the affected product; the root cause dates to the 2019 spinlockification (commit 8a3d57b6cc6).
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:C/C:H/I:H/A:H
Local on-device user thread (AV:L, PR:L), success needs winning a narrow SMP race (AC:H), and userspace-to-kernel corruption crosses a trust boundary (S:C) with full kernel C/I/A impact.
Primary rating from Vendor (zephyr).
CVSS VectorVendor: zephyr
DescriptionCVE.org
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.
Executive ViewAI
Zephyr RTOS versions 1.14.0 through 4.4.0 contain a kernel memory vulnerability enabling local privilege escalation and service outages on affected systems. Organizations using Zephyr for IoT, embedded devices, and real-time control systems face unauthorized administrative access and operational disruption risks without patching. Immediate remediation is critical for production deployments.
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
Privilege escalation occurs when an attacker leverages flaws in access control mechanisms to gain permissions beyond what they were originally granted.
A buffer overflow occurs when a program writes more data to a memory buffer than it was allocated to hold, causing the excess data to spill into adjacent memory regions.
Use-after-free vulnerabilities occur when a program continues to access memory through a pointer after that memory has been deallocated.
Memory corruption occurs when a program writes data beyond the boundaries of allocated memory regions or accesses memory in unintended ways, violating the integrity of the process's address space.
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
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-43244
NVD
CVE.org
EPSS
Vulnrichment
GitHub
VulDB
Exploit-DB