Skip to main content

Zephyr RTOS CVE-2026-10635

| EUVDEUVD-2026-37036 MEDIUM
Use After Free (CWE-416)
2026-06-16 zephyr
6.3
CVSS 3.1 · NVD
View

Attack ChainAIDerived

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

  1. Access
    Gain kernel/supervisor code execution
  2. Delivery
    Call k_mem_domain_deinit() on active domain
  3. Exploit
    Page tables torn down, ptables set NULL, node left in xtensa_domain_list
  4. Execution
    Trigger arch_mem_map() or arch_mem_unmap() traversal
  5. Persist
    Dereference stale/NULL domain->arch.ptables
  6. Impact
    Fatal MMU exception (DoS) or controlled page-table write (isolation bypass)

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 Zephyr v4.4.0 compiled for an Xtensa target with both CONFIG_USERSPACE=y and CONFIG_XTENSA_MMU=y in the build configuration; the Xtensa MPU path is unaffected. The attacker must already possess privileged kernel/supervisor execution context - k_mem_domain_deinit() is not exposed as a system call and cannot be invoked by unprivileged user threads. Remote exploitation is not possible. The triggering sequence requires first calling k_mem_domain_deinit() (or an arch_mem_domain_deinit() caller) to create the dangling list node, then triggering any arch_mem_map() or arch_mem_unmap() code path to traverse the stale entry. Exploitation is limited to: (1) Zephyr v4.4.0 only - the vulnerable feature did not exist in prior releases; (2) Xtensa MMU path only; (3) high-privilege (kernel) code execution as a prerequisite; (4) dynamic memory domain lifecycle (create, use, destroy) must be exercised at runtime.

Impact

The provided CVSS 3.1 vector (AV:L/AC:L/PR:H/UI:N/S:U/C:L/I:H/A:H, score 6.3) correctly reflects the local, high-privilege access requirement - k_mem_domain_deinit is callable only from privileged kernel/supervisor context and is not exposed as a syscall to unprivileged user threads. This substantially limits the attack surface in a typical Zephyr deployment: an attacker must already have kernel-level code execution to reach the vulnerable path. EPSS data was not provided, and the absence of KEV listing and public POC suggests no observed in-the-wild exploitation at time of analysis. The I:H and A:H ratings are appropriate given that successful exploitation can silently corrupt page-table mappings (degrading userspace isolation) or crash the kernel via a fatal MMU exception (denial of service in an embedded/IoT context where crash recovery may be unavailable). The C:L rating acknowledges potential confidentiality loss if userspace memory isolation is undermined. No CVSS/description conflict is present - both agree on the local, privileged nature of the flaw. Real-world priority is moderate-to-high for Zephyr v4.4.0 deployments using Xtensa/MMU with dynamic memory domains, but low or irrelevant for deployments on other architectures, using the MPU path, or not enabling CONFIG_USERSPACE.

Exploit ScenarioDerived

A privileged kernel component (e.g., a kernel module or compromised driver) calls k_mem_domain_deinit() on an active memory domain, tearing down its page tables while leaving its node in xtensa_domain_list. A concurrent or subsequent kernel thread then invokes a memory-mapping operation (e.g., demand paging or k_mem_map()), which traverses the stale list entry and dereferences the now-NULL domain->arch.ptables pointer, crashing the Zephyr kernel with a fatal MMU exception. In a more targeted scenario, if the original k_mem_domain storage is freed and then reallocated for attacker-controlled data, the ptables pointer becomes a controlled value that l2_page_table_map writes through during the page-table walk, potentially redirecting virtual-to-physical mappings and breaking userspace process isolation.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.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

AnalysisAIv1 – Jun 16, 2026

Use-after-free in Zephyr RTOS v4.4.0 on Xtensa/MMU targets allows privileged kernel code to corrupt page tables or trigger a fatal MMU exception by destroying a memory domain without unlinking it from the global xtensa_domain_list. The dangling list node persists after arch_mem_domain_deinit() sets domain->arch.ptables to NULL, so any subsequent arch_mem_map() or arch_mem_unmap() call traverses the stale entry and dereferences the freed pointer - producing at minimum a denial-of-service kernel crash (NULL pointer deref) and at worst page-table memory corruption that undermines userspace process isolation. No public exploit code exists and no CISA KEV listing is present; however the integrity and availability impact (I:H, A:H) in a real-time OS kernel elevates practical severity beyond the 6.3 base score for affected embedded deployments.

RemediationAI

The upstream fix is available as commit 33d43d09337119fc6084b4ab545f9267839973f6 in the Zephyr main branch (https://github.com/zephyrproject-rtos/zephyr/commit/33d43d09337119fc6084b4ab545f9267839973f6); it adds a single sys_slist_find_and_remove() call in arch_mem_domain_deinit() to properly unlink the domain node before teardown. A stable patched release version has not been independently confirmed from the available data - maintainers should verify whether a v4.4.1 or backport tag has been published via the GitHub advisory at https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-39v7-cx8j-gq82. For deployments that cannot apply the patch immediately, the most direct compensating control is to disable CONFIG_XTENSA_MMU and fall back to the MPU path if the target hardware supports it; however this may reduce memory protection granularity. Alternatively, audit all call sites of k_mem_domain_deinit() in the application firmware and eliminate or defer domain destruction so that stale entries never appear in xtensa_domain_list during active mapping operations - this constrains design flexibility but eliminates the vulnerable path without rebuilding firmware. Disabling CONFIG_USERSPACE entirely removes the feature but also eliminates userspace thread isolation entirely, which is an unacceptable trade-off for most security-conscious deployments.

Affected VersionsENISA

Zephyr 4.4.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 vulnerable code resides in arch/xtensa/core/ptables.c within the Zephyr RTOS kernel, specifically the arch_mem_domain_deinit() function active only when both CONFIG_USERSPACE and CONFIG_XTENSA_MMU Kconfig options are enabled. Zephyr's Xtensa MMU port maintains a singly-linked list (xtensa_domain_list) of all active struct k_mem_domain objects, with the list node embedded directly inside each domain struct (domain->arch.node). CWE-416 (Use After Free) applies because domain_deinit tears down the L1/L2 page table structures and nullifies domain->arch.ptables but omits the mandatory sys_slist_find_and_remove() call to unlink the node from xtensa_domain_list. The result is a dangling list pointer into caller-owned (potentially freed or reused) storage. Downstream traversal functions l2_page_table_map and xtensa_mmu_compute_domain_regs both write through the stale ptables pointer - into L1 and L2 page table entries - creating exploitable memory corruption. The Xtensa MPU code path uses a different mechanism and is unaffected. CPE: cpe:2.3:a:zephyrproject:zephyr:*:*:*:*:*:*:*:*.

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 6.3 MEDIUM
AV:L/AC:L/PR:H/UI:N/S:U/C:L/I:H/A:H
vuln.today AI 6.3 MEDIUM

Local vector and PR:H confirmed by description; page-table corruption yields I:H and A:H; C:L reflects partial isolation bypass risk.

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

Primary rating from Vendor (zephyr).

CVSS VectorNVD

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

DescriptionNVD

On Xtensa targets with CONFIG_USERSPACE and CONFIG_XTENSA_MMU, the page-table code (arch/xtensa/core/ptables.c) maintains a global list, xtensa_domain_list, of active memory domains using a list node embedded inside the caller-owned struct k_mem_domain. When a domain is destroyed via k_mem_domain_deinit() - arch_mem_domain_deinit(), the page tables are torn down and domain-arch.ptables is set to NULL, but the domain's node was not removed from xtensa_domain_list. The freed/deinitialized domain therefore remained linked into the global list as a dangling pointer into caller-owned storage that may then be freed or reused. Any subsequent arch_mem_map()/arch_mem_unmap() operation (widely invoked by kernel memory-mapping and demand-paging code) traverses the stale node and dereferences domain-ptables: at minimum a NULL pointer dereference causing a fatal MMU exception (denial of service), and if the k_mem_domain storage has been freed or reused, a use-after-free in which a stale/controlled ptables value is dereferenced and written through during the page-table walk (l2_page_table_map writes l1_table[...] and l2_table[...], and xtensa_mmu_compute_domain_regs writes into the domain struct and the L1 table), yielding page-table memory corruption that can undermine userspace isolation. The vulnerable path is reachable only from privileged kernel/supervisor code (k_mem_domain_deinit is not a syscall), not directly from unprivileged user threads or remotely. Affected: Zephyr v4.4.0 (the Xtensa memory-domain de-initialization feature was introduced in commit 3032b58f52d and first shipped in v4.4.0); fixed on main by adding sys_slist_find_and_remove() in arch_mem_domain_deinit(). The Xtensa MPU path is unaffected.

Threat Intelligence Overview

EPSS Score
0.1%
Top 98% exploitable
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment 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 MEDIUM
CISA KEV No
Public POC No
EPSS 0.1%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.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· derived
Defer
Exploitation
None
System Exposure· derived
Small
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

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

Attack Technique

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.

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