Skip to main content

Zephyr RTOS EUVDEUVD-2026-92286

| CVE-2026-19185 HIGH
Untrusted Pointer Dereference (CWE-822)
2026-10-05 zephyr
7.8
CVSS 3.1 · Vendor: zephyr
View

Attack ChainAIDerived

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

  1. Access
    Run user thread granted I3C device access
  2. Delivery
    Craft CCC with kernel-address target payload
  3. Exploit
    Bypass incomplete syscall verifier (unvalidated per-target buffer)
  4. Execution
    Driver dereferences attacker pointer per rnw
  5. Impact
    Kernel out-of-bounds write and memory disclosure yield supervisor privilege

Vulnerability Assessment

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

Exploitable ONLY in builds compiled with CONFIG_USERSPACE (which is when drivers/i3c/i3c_handlers.c is built) that also include an I3C controller driver (e.g. i3c_mcux, i3c_cdns, i3c_stm32, i3c_npcx). The attacker must be a local unprivileged user-mode thread that has been granted access to the I3C controller device object - the ordinary mechanism by which an application lets a user thread talk to I3C peripherals; there is no remote or network path. The specific trigger is a direct CCC request whose per-target struct i3c_ccc_target_payload data pointer and data_len were never passed through K_SYSCALL_MEMORY(); rnw selects whether this becomes a kernel write (read CCC) or a disclosure (write CCC). Limiting factors: requires local execution, a pre-existing device-access grant, and a build that enables userspace isolation and I3C - devices without CONFIG_USERSPACE are entirely unaffected.

Impact

All signals point to a genuine but condition-gated local privilege-escalation issue rather than a mass-exploitation threat. The CVSS 3.1 vector (AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H, base 7.8) is internally consistent with the description: this is local-only (an attacker must already run a user-mode thread on the device), low-complexity, and requires only low privilege (an unprivileged thread that has been granted access to the I3C controller device object). Impact is correctly rated high across confidentiality, integrity and availability because the flaw yields an arbitrary-length out-of-bounds kernel write and kernel memory disclosure - a clean break of the user/supervisor isolation CONFIG_USERSPACE is designed to enforce. No EPSS score, CISA KEV listing, POC, or SSVC decision data was supplied, so there is no evidence of active exploitation; per the input this is 'no public exploit identified at time of analysis.' The realistic priority is therefore moderate-to-high for the narrow population actually running affected configurations and low for everyone else: exploitation is impossible unless the build enables CONFIG_USERSPACE, compiles the I3C subsystem, and deliberately grants a user thread access to the controller device. The absence of a network vector and the local-plus-granted-access precondition sharply limit real-world exposure despite the high base score. No signals conflict; the main caveat is that the only exploitation evidence is the vendor's own code fix and advisory, with no independent exploitation telemetry.

Exploit ScenarioDerived

On a Zephyr device built with CONFIG_USERSPACE, an unprivileged application thread that has legitimately been granted access to the I3C controller device issues a direct CCC syscall whose per-target payload data pointer names an arbitrary kernel address. Because the verifier never ran K_SYSCALL_MEMORY() on the per-target buffer, a read CCC makes the kernel driver write bus bytes into attacker-chosen kernel memory while a write CCC leaks kernel memory onto the bus, giving the thread supervisor-level control. No public exploit is identified at time of analysis; exploitation requires local code execution and prior device-access grant.

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 – Oct 05, 2026

Zephyr RTOS builds that enable CONFIG_USERSPACE and include an I3C controller driver allow an unprivileged user-mode thread with a grant on the I3C controller device object to escalate to supervisor privilege. The syscall verifier z_vrfy_i3c_do_ccc() checked the outer i3c_ccc_payload, the broadcast data buffer and the targets.payloads[] array but never validated the per-target data pointers carried inside each struct i3c_ccc_target_payload, and it validated the caller's live structure rather than a snapshot, so the driver dereferences an attacker-chosen kernel address; a read CCC turns this into an arbitrary-length out-of-bounds kernel write and a write CCC into a kernel memory disclosure (CVSS 3.1 base 7.8, AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H, CWE-822). No public exploit code or confirmed active exploitation was identified at time of analysis, and the issue is strictly local - there is no remote or network attack path. An upstream fix commit exists that snapshots the payload, copies the target array into kernel memory and validates every per-target buffer with K_SYSCALL_MEMORY(), but no tagged release version containing it was independently confirmed from the provided data.

RemediationAI

Apply the upstream fix commit 35562f22f40c6d2f31969a31f0a4902e5b067f27 (referenced by the vendor advisory at https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-pcrr-29j7-8w57), which replaces the vulnerable z_vrfy_i3c_do_ccc() body with copy_ccc_and_do(); the exact patched release tag was not confirmed in the provided data, so verify the commit is present in the branch you build - a released-version patch should be treated as available per vendor advisory rather than assumed from a version number. If your product cannot immediately move to a build containing that commit, the highest-value compensating control is to avoid granting the I3C controller device object to unprivileged user-mode threads: keep all I3C CCC traffic in supervisor mode and expose only a narrow, validated API to user threads, at the cost of losing the userspace isolation benefit for that peripheral. As a cruder fallback, disabling CONFIG_USERSPACE removes the attack surface entirely because drivers/i3c/i3c_handlers.c is no longer compiled, but that forfeits memory isolation across the whole application and is far more disruptive than the targeted permission change. Note that no driver-level workaround fully substitutes for the verifier fix, since the missing K_SYSCALL_MEMORY() check on per-target data buffers and the live-structure (TOCTOU) problem both have to be closed in the syscall layer.

Affected VersionsENISA

Zephyr 3.2.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 affected component is the Zephyr syscall verification layer for the I3C subsystem, specifically drivers/i3c/i3c_handlers.c, which is only compiled when CONFIG_USERSPACE is enabled. In Zephyr, user-mode threads reach kernel services through syscall stubs: a z_vrfy_* function must validate every user-supplied pointer with the K_SYSCALL_MEMORY() family before passing the request to the z_impl_* implementation and on to the controller driver. For I3C Common Command Code (CCC) transfers, struct i3c_ccc_payload contains a broadcast ccc.data buffer plus a targets.payloads[] array of struct i3c_ccc_target_payload, and each array element carries its own data pointer, data_len and rnw direction flag. The vulnerable verifier validated the outer payload, the broadcast buffer and the payloads[] array itself, but never the data buffers those array elements point at, so an attacker-controlled pointer reached the driver unvalidated - the untrusted pointer dereference class described by CWE-822. The rnw flag decides direction: for a read CCC the driver writes bus-received bytes into the supplied pointer (kernel write), and for a write CCC it reads kernel memory from that pointer and transmits it on the I3C bus (disclosure). Controller drivers such as drivers/i3c/i3c_mcux.c, i3c_cdns.c, i3c_stm32.c and i3c_npcx.c all dereference the pointer directly. A second, related weakness is that the verifier operated on the caller's live structure instead of a snapshot, so a second user thread could mutate already-validated fields between the check and the driver's use - a classic time-of-check/time-of-use gap; its sibling z_vrfy_i3c_transfer() has always copied its message array first. The fix, per commit 35562f22f40c6d2f31969a31f0a4902e5b067f27, introduces copy_ccc_and_do(), which memcpy's the payload into a local snapshot, bounds targets.num_targets to fewer than 32, copies the target array into kernel memory with k_usermode_alloc_from_copy(), validates each per-target buffer with K_SYSCALL_MEMORY() according to rnw, and copies the driver-written num_xfer and err scalars back to the caller.

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

Local user thread with a granted I3C device handle gives AV:L/PR:L/AC:L; arbitrary kernel read/write yields C:H/I:H/A:H, scope unchanged within the kernel.

3.1 AV:L/AC:L/PR:L/UI:N/S:U/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: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
High
Integrity
High
Availability
High

DescriptionCVE.org

The system-call verifier for i3c_do_ccc() in drivers/i3c/i3c_handlers.c validated the outer struct i3c_ccc_payload, the broadcast ccc.data buffer and the targets.payloads[] array, but did not validate the per-target data buffers those array elements point at. Each struct i3c_ccc_target_payload carries its own data pointer and data_len, and neither was passed through K_SYSCALL_MEMORY() before the payload was handed to z_impl_i3c_do_ccc() and on to the controller driver. The verifier also operated on the caller's live structure rather than a snapshot, so validated fields could be changed by a second user thread between the check and the driver's use - unlike the sibling z_vrfy_i3c_transfer(), which has always copied its message array first.

The defect is only present in CONFIG_USERSPACE builds, where drivers/i3c/i3c_handlers.c is compiled. An unprivileged user-mode thread that has been granted access to the I3C controller device object - the ordinary way an application lets a user thread talk to I3C peripherals - can issue a direct CCC whose target payload data pointer names an arbitrary kernel address. Controller drivers dereference that pointer directly (for example drivers/i3c/i3c_mcux.c, drivers/i3c/i3c_cdns.c, drivers/i3c/i3c_stm32.c, drivers/i3c/i3c_npcx.c), using rnw to decide direction.

A read CCC therefore causes the kernel-mode driver to write bus-received bytes into an attacker-chosen kernel address for an attacker-chosen length, and a write CCC transmits kernel memory out onto the I3C bus. The result is an out-of-bounds kernel write plus a kernel memory disclosure, i.e. escalation from a user-mode thread to supervisor privilege, defeating the isolation CONFIG_USERSPACE is meant to provide.

The fix introduces copy_ccc_and_do(), which snapshots the payload, copies the target array into kernel memory with k_usermode_alloc_from_copy() (bounding num_targets to fewer than 32), validates each per-target buffer with K_SYSCALL_MEMORY() according to rnw, and copies the driver-written num_xfer and err fields back to the caller.

Technical POC Analysis

CWE-822 (Untrusted Pointer Dereference) in the syscall verifier zvrfyi3cdoccc() at drivers/i3c/i3chandlers.c:11 (parent revision, include/zephyr/drivers/i3c/ccc.h:243 / :283 for the structs).

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

Zephyr RTOS builds that enable CONFIG_USERSPACE and include an I3C controller driver contain a high-severity local privilege-escalation flaw affecting the confidentiality and integrity of embedded products, where an unprivileged user-mode thread with a device grant can reach supervisor privileges. Leadership should prioritize identifying and remediating affected builds, particularly in products that run less-trusted code in user mode, because a successful local attack could compromise device behavior and data. No public exploit identified at time of analysis and the issue is strictly local, but the available fix and high impact warrant prompt action.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.1%
Top 99% exploitable
Prevalence
Medium
widely-used embedded RTOS, but CONFIG_USERSPACE plus I3C configuration is uncommon
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
Defer
Exploitation
None
System Exposure· derived
Small
Automatable
No
Human Impact
High
Technical Impact
Partial

Priority Score

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

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