Skip to main content

Zephyr RTOS EUVDEUVD-2026-60268

| CVE-2026-9771 HIGH
Untrusted Pointer Dereference (CWE-822)
2026-08-17 zephyr
8.8
CVSS 3.1 · Vendor: zephyr
View

Attack ChainAIDerived

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

  1. Access
    Obtain user-mode thread execution on Zephyr device
  2. Delivery
    Forge struct device with attacker-controlled API function table in own address space
  3. Exploit
    Invoke flash_copy() syscall passing forged device pointer as src_dev or dst_dev
  4. Execution
    Kernel verifier z_vrfy_flash_copy() accepts pointer without K_SYSCALL_DRIVER_FLASH validation
  5. Persist
    z_impl_flash_copy() dereferences forged API table in supervisor mode
  6. Impact
    Execute arbitrary code at kernel privilege level

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Untrusted pointer prevention
Exploitation Conditions

Exploitation requires all of the following: (1) CONFIG_USERSPACE must be enabled at build time - this is the decisive condition; without it, z_vrfy_flash_copy() is not compiled and the attack surface does not exist; (2) the attacker must have code execution as a low-privileged user-mode thread on the target device (PR:L per CVSS vector - a valid Zephyr userspace thread context); (3) the flash_copy() syscall must be accessible to the calling thread (not restricted by Zephyr's thread permission system). Exploitation is NOT gated by network access (AV:L), race conditions (AC:L), or user interaction (UI:N). The primary real-world limiting factor beyond CONFIG_USERSPACE is the requirement for existing local code execution - this is not remotely triggerable. Deployments that do not use CONFIG_USERSPACE or that use Zephyr's permission system to deny flash_copy() access to untrusted threads have meaningfully reduced exposure.

Impact

The CVSS 3.1 score of 8.8 with vector AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H is internally consistent with the description: the attack is local, requires only a low-privileged user-mode thread (PR:L), involves no race condition or complexity (AC:L), and achieves a full scope change - breaking out of the Zephyr userspace sandbox into kernel supervisor mode - with full confidentiality, integrity, and availability impact. The S:C (scope changed) metric is the most consequential signal here: this is not a contained userspace crash but a complete kernel compromise. No EPSS data was provided in the input, so exploitation probability cannot be quantified. No KEV listing exists, meaning CISA has not confirmed active exploitation. No public POC has been identified at time of analysis, though the published commit diff provides a sufficiently detailed roadmap that the exploit primitive (forge a struct device, invoke the syscall) is straightforward for a capable attacker. The principal real-world risk is an already-present low-privileged process on a Zephyr-based embedded or IoT device escalating to full kernel control - a particularly acute concern in safety-critical or industrial deployments. The limiting factor is CONFIG_USERSPACE: builds without this feature are entirely unaffected, which meaningfully reduces the exposed population.

Exploit ScenarioDerived

An attacker with code execution as a low-privileged user-mode thread on a Zephyr 4.0.0-4.4.1 device (CONFIG_USERSPACE enabled) allocates a forged struct device in their own address space, populating its api field with a pointer to an attacker-controlled function table. The thread calls flash_copy() passing the forged pointer as src_dev or dst_dev; z_vrfy_flash_copy() accepts the pointer without kernel-object validation, and z_impl_flash_copy() dereferences the forged API table and calls the attacker's function in supervisor mode, achieving full kernel privilege escalation. No public proof-of-concept has been identified, but the exploit primitive is straightforward given the published commit diff detailing exactly which validation was absent.

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

AnalysisAIv1 – Aug 17, 2026

Local privilege escalation in Zephyr RTOS (versions 4.0.0-4.4.1 with CONFIG_USERSPACE enabled) allows an unprivileged user-mode thread to execute arbitrary code in kernel supervisor mode by supplying forged struct device pointers with attacker-controlled API function tables to the flash_copy() system call. The syscall verifier z_vrfy_flash_copy() validated the output buffer but omitted the K_SYSCALL_DRIVER_FLASH object validation for src_dev and dst_dev that every sibling flash syscall enforces - a unique gap in the trust boundary that the kernel implementation blindly dereferences in supervisor context. No public exploit or active exploitation has been identified at time of analysis; a vendor-released patch is confirmed in commit 1b1ecdc4 and available in Zephyr 4.4.2.

RemediationAI

Upgrade to Zephyr 4.4.2 or later, which incorporates the fix commit 1b1ecdc438092cdd469319a0d51cba6cf82e06f4 adding K_SYSCALL_DRIVER_FLASH object validation for both src_dev and dst_dev in z_vrfy_flash_copy(). The patch is available at https://github.com/zephyrproject-rtos/zephyr/commit/1b1ecdc438092cdd469319a0d51cba6cf82e06f4 and the advisory at https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-68cj-3hg4-5vpm. For systems that cannot immediately upgrade, disabling CONFIG_USERSPACE at build time removes the vulnerable code path entirely, but eliminates Zephyr's userspace isolation feature - this trade-off is likely unacceptable for any deployment that relies on sandboxing untrusted threads. A narrower compensating control is to audit application code and ensure no untrusted or externally-influenced threads can invoke flash_copy(); however, this is an application-level mitigation and does not close the kernel trust boundary gap. Patching to 4.4.2 is the only complete remediation.

Affected VersionsENISA

Zephyr 4.0.0 <4.4.2

Affected Packages

euvd zephyr fix: 4.4.2

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 RTOS implements a userspace isolation model via CONFIG_USERSPACE, where system call verifiers (z_vrfy_* functions in drivers/) enforce the kernel-side trust boundary by validating that all pointer arguments reference legitimate kernel objects before passing them to the kernel implementation. The affected code resides in drivers/flash/flash_util.c. CWE-822 (Untrusted Pointer Dereference) describes the root cause precisely: z_vrfy_flash_copy() applied K_SYSCALL_MEMORY_WRITE to the output buffer but passed src_dev and dst_dev - struct device pointers fully controlled by the user-mode caller - directly into z_impl_flash_copy() without K_SYSCALL_DRIVER_FLASH validation. z_impl_flash_copy() then dereferences these pointers to call through their driver API function tables (api->get_parameters, flash_read, flash_write) in supervisor mode. The CPE cpe:2.3:a:zephyrproject:zephyr:*:*:*:*:*:*:*:* covers all Zephyr versions; EUVD-2026-60268 narrows the affected range to 4.0.0 through 4.4.1. The fix (commit 1b1ecdc4) adds two lines - K_OOPS(K_SYSCALL_DRIVER_FLASH(src_dev, read)) and K_OOPS(K_SYSCALL_DRIVER_FLASH(dst_dev, write)) - restoring consistency with all sibling flash syscalls.

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

AV:L because exploitation requires a local user-mode thread; PR:L for a valid unprivileged thread context; S:C because successful exploitation crosses the userspace-to-kernel supervisor boundary.

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

Primary rating from Vendor (zephyr).

CVSS VectorVendor: zephyr

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

DescriptionCVE.org

The flash_copy() system call is verified by z_vrfy_flash_copy() in drivers/flash/flash_util.c. On builds with CONFIG_USERSPACE enabled, this handler is the kernel-side trust boundary for a user-mode caller. Prior to the fix it validated only the output buffer (K_SYSCALL_MEMORY_WRITE) and passed the two struct device * arguments, src_dev and dst_dev, directly into the implementation without any object validation - unlike every sibling flash syscall, which guards its device pointer with K_SYSCALL_DRIVER_FLASH.

A user-mode thread fully controls the values of src_dev/dst_dev and the contents of its own address space. The implementation z_impl_flash_copy() dereferences these pointers and calls through their driver-API function tables (e.g. api->get_parameters(dst_dev), flash_read(src_dev, ...), flash_write(dst_dev, ...)). By supplying a pointer to a forged struct device whose api table contains attacker-chosen function pointers, an unprivileged thread can cause the kernel to call arbitrary code in supervisor mode; passing any arbitrary or invalid address otherwise yields a kernel crash or out-of-bounds read.

The result is a local privilege escalation out of the userspace sandbox (with kernel denial-of-service and information disclosure as lesser outcomes). The fix adds K_SYSCALL_DRIVER_FLASH(src_dev, read) and K_SYSCALL_DRIVER_FLASH(dst_dev, write) to z_vrfy_flash_copy(), which verify each device is a registered flash-driver kernel object the calling thread is permitted to use before any dereference, closing the path completely.

Executive ViewAI

Why It Matters

Zephyr RTOS versions 4.0.0 through 4.4.1 with CONFIG_USERSPACE enabled contain a high-severity local privilege escalation vulnerability; no public exploit identified at time of analysis. The flaw permits unprivileged users with system access to execute arbitrary code in kernel supervisor mode, risking complete system compromise and collapse of privilege isolation controls.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.1%
Top 99% exploitable
Prevalence
Low
niche embedded RTOS used in IoT and industrial devices
Social Media
1
Sightings
Data Quality
6 sources
Confidence: High

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

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

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.

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.

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