Skip to main content

Zephyr RTOS CVE-2026-10671

| EUVDEUVD-2026-43698 HIGH
Expired Pointer Dereference (CWE-825)
2026-07-14 zephyr
7.1
CVSS 3.1 · Vendor: zephyr
View

Attack ChainAIDerived

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

  1. Recon
    Gain unprivileged user-thread foothold
  2. Delivery
    Hold granted access to live k_pipe
  3. Exploit
    Call k_pipe_init syscall to re-init pipe
  4. Install
    Orphan threads pended on pipe
  5. C2
    Waiter times out or is woken
  6. Execute
    sys_dlist_remove writes through stale pointers
  7. Impact
    Kernel list corruption and lost wakeups

Vulnerability Assessment

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

Exploitation requires a Zephyr build compiled with CONFIG_USERSPACE, an attacker-controlled unprivileged user thread, and that thread having been explicitly granted access permission to a k_pipe kernel object that is actively shared and in use by other threads. The trigger is invoking the k_pipe_init syscall to re-initialize that already-initialized, live pipe; the damaging invalid kernel write only materializes when a thread is (or becomes) pended in k_pipe_read()/k_pipe_write() on that pipe and is subsequently timed out or woken. Limiting factors that reduce realistic risk: the attack is local only (AV:L) and needs an existing low-privilege foothold (PR:L), it does not affect default builds without CONFIG_USERSPACE, and it requires the specific configuration where a user thread holds a permission grant to a shared pipe object - firmware that never exposes pipes to user threads is not exploitable.

Impact

The CVSS 3.1 base score is 7.1 with vector AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H, indicating a local, low-complexity attack requiring only low privileges and no user interaction, with high integrity and availability impact but no confidentiality impact. This is fundamentally a local privilege-context integrity/availability bug, not a remote or information-disclosure issue, so real-world priority is high only for products that actually ship CONFIG_USERSPACE with user threads granted access to shared pipe objects - a specific, non-default deployment shape. No EPSS score, KEV entry, or POC was provided, so exploitation probability cannot be quantified and no public exploit is identified at time of analysis. Note a conflicting signal: the input Tags label this 'Information Disclosure,' but the CVSS vector explicitly sets C:N and the description describes kernel-memory corruption and data loss, not disclosure - the tag appears inaccurate and integrity/availability is the true impact. There is also a scope consideration worth verifying: the description says the flaw corrupts a kernel object shared across threads/partitions, which could argue for a scope change (S:C), yet the published vector uses S:U; defenders operating multi-partition userspace configurations should treat cross-partition impact as plausible.

Exploit ScenarioDerived

On a CONFIG_USERSPACE Zephyr firmware image where an unprivileged partition has been granted access to a k_pipe shared with a higher-trust thread, a compromised or malicious user thread invokes the k_pipe_init syscall a second time on that in-use pipe while another thread is blocked in k_pipe_read()/k_pipe_write(). When the orphaned waiter is later timed out or woken, the scheduler dereferences its stale list node and writes through dangling pointers into kernel structures, corrupting wait-queue/scheduler state. No POC was provided, and the local attack vector with low complexity means a foothold as an unprivileged user thread is the main prerequisite.

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 – Jul 14, 2026

Kernel object corruption in Zephyr RTOS (v4.1.0 through v4.4.0) lets a deprivileged user thread on CONFIG_USERSPACE builds re-initialize a live k_pipe to which it has been granted access, orphaning threads already blocked on that pipe. Because z_impl_k_pipe_init() unconditionally resets the ring buffer and wait queues without accounting for pended waiters, a subsequent timeout or wake drives sys_dlist_remove() through dangling pointers, producing an attacker-influenced invalid kernel write, list corruption, lost wakeups, and silent data loss. There is no public exploit identified at time of analysis and it is not listed in CISA KEV; the fix hardens the k_pipe_init syscall verifier.

RemediationAI

Apply the upstream fix that switches the z_vrfy_k_pipe_init() verifier from K_SYSCALL_OBJ() to K_SYSCALL_OBJ_NEVER_INIT(), delivered in commit https://github.com/zephyrproject-rtos/zephyr/commit/4424aa681e0b80e9cbd0ae27a987d582be88cb74 and described in advisory https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-p8w8-3x99-mg8f; an upstream fix (commit) is available but a specific tagged patched release version was not independently confirmed from the provided data, so integrators should rebuild from a Zephyr tree containing this commit. As a compensating control where immediate rebuild is not possible, avoid granting unprivileged user threads access to shared k_pipe kernel objects (do not add live pipes to a user thread's object permission set), or restructure affected pipe usage to kernel-only threads, accepting the functional trade-off that user-mode code can no longer directly operate on those pipes. Because the root cause is a missing already-initialized check, application-level input validation offers no mitigation and only the code fix or removing user-thread pipe access reliably closes the flaw.

Affected VersionsENISA

Zephyr 4.1.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

Zephyr is a widely-used open-source real-time operating system for microcontrollers and embedded/IoT devices. The flaw sits in its userspace protection model (CONFIG_USERSPACE), where kernel objects such as pipes are accessed by unprivileged threads through syscalls that must be validated by a verifier. The verifier z_vrfy_k_pipe_init() in kernel/pipe.c used K_SYSCALL_OBJ(), which only requires that the k_pipe object already be a valid, initialized kernel object, instead of K_SYSCALL_OBJ_NEVER_INIT(), which additionally rejects objects that are already initialized. This maps to CWE-825 (use of a dangling/expired pointer): re-initializing an in-use pipe calls z_waitq_init() on pipe->data and pipe->space and clears pipe->waiting, leaving any thread pended in k_pipe_read()/k_pipe_write() with pended_on pointing at a cleared wait queue and stale qnode_dlist links into the now-reset embedded doubly-linked list head. The corrected code matches the pattern already used by the k_msgq_init verifier.

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

Local user-thread foothold with a pipe permission grant gives PR:L/AV:L/AC:L; kernel-memory corruption and blocked threads give I:H/A:H with no disclosure (C:N).

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

Primary rating from Vendor (zephyr).

CVSS VectorVendor: zephyr

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

DescriptionCVE.org

In Zephyr's kernel pipe implementation, the userspace syscall verifier z_vrfy_k_pipe_init() in kernel/pipe.c used K_SYSCALL_OBJ() (which requires the kernel object to already be initialized) instead of K_SYSCALL_OBJ_NEVER_INIT() (which rejects an already-initialized object). As a result, on CONFIG_USERSPACE builds an unprivileged user thread that has been granted access to a k_pipe object can invoke the k_pipe_init syscall to re-initialize a pipe that is already in use.

z_impl_k_pipe_init() unconditionally resets the ring buffer, sets pipe->waiting to 0, and re-initializes both wait queues (z_waitq_init on pipe->data and pipe->space) without waking or accounting for threads currently blocked on the pipe. Any thread already pended in k_pipe_read()/k_pipe_write() is left orphaned: still marked pending with pended_on pointing at the cleared wait queue and with stale qnode_dlist links into the (now re-initialized) embedded list head.

When such an orphaned waiter is later timed out or woken, the scheduler calls sys_dlist_remove() on its stale node, writing through dangling prev/next pointers into kernel wait-queue/scheduler structures, causing list corruption (an attacker-driven invalid kernel write), lost wakeups, indefinitely blocked threads, and silent data loss. The flaw lets a deprivileged user thread corrupt the state of a kernel object shared with other threads/partitions.

The fix switches the verifier to K_SYSCALL_OBJ_NEVER_INIT(), matching the existing k_msgq_init verifier, so a user thread can no longer re-initialize a live pipe. The vulnerable code shipped in v4.1.0 and remained through v4.4.0.

Executive ViewAI

Why It Matters

A kernel corruption vulnerability in Zephyr RTOS 4.1.0-4.4.0 allows unprivileged system users to trigger data loss and system instability on affected embedded and IoT devices. Organizations using these Zephyr versions risk silent failures, dropped messages, and unexpected device crashes in production environments. This requires urgent patching to maintain operational reliability.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.1%
Top 99% exploitable
Prevalence
Medium
popular embedded/IoT RTOS, but only CONFIG_USERSPACE builds are affected
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 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
Partial

Priority Score

36
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +36
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.

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