Skip to main content

Zephyr RTOS CVE-2026-10670

| EUVDEUVD-2026-43697 MEDIUM
NULL Pointer Dereference (CWE-476)
2026-07-14 zephyr
5.5
CVSS 3.1 · Vendor: zephyr
View

Attack ChainAIDerived

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

  1. Access
    Gain low-privilege user-mode thread execution on device
  2. Delivery
    Invoke k_thread_name_copy() with arbitrary non-NULL unregistered address
  3. Exploit
    k_object_find() returns NULL for unregistered pointer
  4. Execution
    Pre-fix guard (thread == NULL) passes incorrectly
  5. Persist
    Supervisor-mode dereference of ko->type through NULL pointer
  6. Impact
    Kernel-mode fault halts or reboots system

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A10:2025 - Mishandling of Exceptional Conditions
ASVS 5.0
V16 - Security Logging and Error Handling Null pointer safety, defensive checks
MITRE ATT&CK

1 technique across 1 tactic: Impact

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Two build-time Kconfig options must both be enabled: CONFIG_USERSPACE=y (compiles in the userspace boundary and syscall verifiers) and CONFIG_THREAD_NAME=y (compiles in the k_thread_name_copy() syscall and its z_vrfy_ verifier). Without either option the vulnerable code path is not present in the firmware image. At runtime, the attacker must have execution capability as a low-privilege user-mode thread on the target device (PR:L per CVSS) - i.e., the attacker must already have unprivileged code running locally on the device. The syscall itself requires only a single invocation with a non-NULL but unregistered pointer value; no brute force, timing precision, or heap state is required. Remote exploitation is not possible without a separate initial access vector. The local-only attack vector (AV:L) and the non-default build configuration are the primary limiting factors that reduce real-world exposure beyond the raw CVSS score.

Impact

The CVSS 3.1 vector AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H with a base score of 5.5 accurately captures the risk profile: local low-privilege access is required, impact is confined to availability, and the scope is unchanged. The attack complexity is genuinely low - a single malformed syscall invocation is sufficient with no race conditions, heap grooming, or timing precision needed. However, real-world exposure is gated by two non-default build-time conditions (CONFIG_USERSPACE and CONFIG_THREAD_NAME both enabled), which meaningfully reduces the population of vulnerable deployed images. EPSS data was not provided in the input, so numerical exploitation probability cannot be quantified. No CISA KEV listing exists and no public POC exploit code was identified, consistent with no public exploit at time of analysis. Despite the moderate CVSS score, impact in embedded and safety-critical contexts (industrial IoT, medical devices, automotive) where Zephyr is deployed can be disproportionate: a kernel reboot may disrupt physical control loops, sensor sampling, or safety-critical actuator states. The local-only attack vector is the primary containment factor - remote exploitation is not possible without a separate initial foothold.

Exploit ScenarioDerived

An attacker with low-privilege code execution on a Zephyr device - for example, a sandboxed application thread in a multi-tenant embedded system - calls k_thread_name_copy() passing an arbitrary non-NULL but unregistered memory address as the thread argument. The pre-fix verifier passes the thread == NULL check (since the address is non-NULL), then k_object_find() returns NULL for the unregistered pointer, and the verifier dereferences ko->type through the NULL pointer in supervisor mode. The resulting kernel-mode fault immediately halts or reboots the device, causing a full denial of service with no public exploit code required beyond a standard Zephyr syscall invocation.

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

NULL pointer dereference in Zephyr RTOS's syscall verifier allows an unprivileged user-mode thread to crash the kernel across the userspace security boundary. The z_vrfy_k_thread_name_copy() verification handler in kernel/thread.c incorrectly guards against the caller-supplied thread pointer being NULL rather than the ko pointer returned by k_object_find(), so any non-NULL but unregistered address bypasses the check and triggers a supervisor-mode NULL dereference that halts or reboots the system. Affecting Zephyr v2.0.0 through v4.4.0 when built with CONFIG_USERSPACE and CONFIG_THREAD_NAME enabled, no public exploit code and no CISA KEV listing have been identified at time of analysis, but the one-syscall reproducibility makes this straightforward to trigger in qualifying builds.

RemediationAI

Apply the upstream fix available in Zephyr commit 491583951036bc5794a3843a4baa246453bb1ee2 (https://github.com/zephyrproject-rtos/zephyr/commit/491583951036bc5794a3843a4baa246453bb1ee2), which corrects the NULL guard in z_vrfy_k_thread_name_copy() from checking the caller-supplied thread pointer to checking the ko pointer returned by k_object_find(). A specific tagged release version containing this fix was not confirmed from the available references - verify the fix version against the official Zephyr release changelog or the GHSA advisory at https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-82h2-v4vm-q2g9 before deploying. As a compensating control for projects that cannot immediately rebuild, disabling CONFIG_THREAD_NAME at build time removes the vulnerable verifier function entirely with no impact on thread scheduling or kernel correctness, at the cost of losing thread naming and debugging capability. Alternatively, if the deployment threat model already excludes untrusted user-mode code, disabling CONFIG_USERSPACE removes the userspace security boundary subsystem entirely, but this is a significant security regression that exposes all syscalls directly and is not recommended unless the application already assumes fully trusted code.

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

Zephyr RTOS implements a userspace security boundary via the CONFIG_USERSPACE Kconfig option, which compiles in per-syscall verifier functions (z_vrfy_*) that run in supervisor mode to validate caller-supplied arguments before dispatching. The z_vrfy_k_thread_name_copy() verifier in kernel/thread.c calls k_object_find() to look up the caller-supplied thread pointer in the kernel object table; k_object_find() returns NULL when the pointer does not correspond to any registered static or dynamic kernel object. CWE-476 (NULL Pointer Dereference) is the exact root cause: the pre-fix conditional tested the original thread argument (which is non-NULL by attacker design) rather than the ko return value, so the verifier unconditionally dereferences ko->type through a NULL pointer. Because this verifier runs in supervisor/privileged mode, the fault is a kernel-mode exception, not a contained userspace fault. The fix is a single-line change from thread NULL to ko NULL (commit 491583951036bc5794a3843a4baa246453bb1ee2). CONFIG_THREAD_NAME must also be enabled for the vulnerable z_vrfy_k_thread_name_copy() path to be compiled. CPE cpe:2.3:a:zephyrproject:zephyr:*:*:*:*:*:*:*:* covers all Zephyr application versions.

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

Requires low-privilege local thread execution (AV:L/PR:L); kernel crash yields complete availability loss (A:H) with zero confidentiality or integrity impact.

3.1 AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
4.0 AV:L/AC:L/AT:N/PR:L/UI:N/VC:N/VI:N/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
None
Availability
High

DescriptionCVE.org

The CONFIG_USERSPACE verification handler for the k_thread_name_copy() system call (z_vrfy_k_thread_name_copy() in kernel/thread.c) calls k_object_find() on the caller-supplied thread pointer and then dereferences the returned struct k_object without checking it for NULL. k_object_find() returns NULL whenever the supplied pointer is not a registered (static or dynamic) kernel object.

The pre-fix guard tested thread NULL instead of ko NULL, so an unprivileged user-mode thread that invokes k_thread_name_copy() with any non-NULL but unregistered pointer (e.g. an arbitrary address) passes the NULL test, after which the verifier reads ko->type through a NULL pointer.

Because the syscall verifier runs in supervisor mode, this NULL dereference is a kernel-mode fault that halts or reboots the system, allowing untrusted user code to crash the kernel across the userspace security boundary (denial of service). The marshaller passes the thread argument to the verifier without any prior K_SYSCALL_OBJ validation, so the bad pointer reaches the defect directly.

The flaw affects builds with CONFIG_USERSPACE and CONFIG_THREAD_NAME enabled and has been present since the special-case lookup was introduced around v2.0.0; it is present in v4.4.0 and earlier. The fix changes the guard to check the k_object_find() return value (ko == NULL) before dereferencing it.

Threat Intelligence Overview

EPSS Score
0.1%
Top 99% exploitable
Prevalence
Low
niche RTOS targeting embedded and IoT, limited enterprise footprint
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

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

Attack Technique

A null pointer dereference occurs when a program attempts to access memory through a pointer that has been set to NULL (address 0x0).

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