Skip to main content

Zephyr RTOS EUVDEUVD-2026-107488

| CVE-2026-19947 MEDIUM
Missing Authorization (CWE-862)
2026-10-21 zephyr
5.3
CVSS 3.1 · Vendor: zephyr
View

Attack ChainAIDerived

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

  1. Access
    Run unprivileged user-mode thread
  2. Delivery
    Obtain compile-time devmux device pointer
  3. Exploit
    Invoke devmux_select_set syscall
  4. Execution
    Bypass missing object access check
  5. Impact
    Redirect or suppress console/shell output

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization checks on every request
MITRE ATT&CK

1 technique across 1 tactic: 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 a build with CONFIG_USERSPACE=y AND the experimental CONFIG_DEVMUX=y (which depends on CONFIG_DEVICE_MUTABLE=y) AND a zephyr,devmux devicetree node present. Given those, any user-mode thread can call devmux_select_get()/devmux_select_set() on the multiplexer device pointer without ever having been granted access to it, because the verifiers performed no k_object_access_check() and the devmux device had no struct k_object at all. Limiting factors: the attacker must already be executing as a local user-mode thread on the device (not remote), and impact is confined to switching among the fixed set of downstream devices defined in the devicetree - typically console and shell-uart - so there is no path to memory corruption or arbitrary code execution.

Impact

This is a moderate, locally-exploitable authorization flaw (CWE-862) rather than a high-urgency remote threat. The provided CVSS:3.1 vector (AV:L/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L, base 5.3) is internally consistent with the description: exploitation requires an already-running user-mode thread on the device (local vector, low privilege), and the impact is bounded Low across C/I/A because the attacker can only read or change which devicetree-fixed downstream device a multiplexer forwards to - not achieve memory corruption or code execution (the description explicitly confirms no out-of-bounds access or arbitrary pointer dereference). No EPSS score, no CISA KEV listing, and no public exploit were provided in the intelligence set, so there is no public exploit identified at time of analysis. The strongest mitigating signal is the narrow exposure surface: the defect is only reachable when CONFIG_USERSPACE=y AND the experimental CONFIG_DEVMUX=y (itself depending on CONFIG_DEVICE_MUTABLE) are set alongside a zephyr,devmux devicetree node - a combination unlikely in most fielded Zephyr builds. No key signals conflict; the main data gap is the absence of EPSS/KEV/POC telemetry, which is expected for a freshly-patched, low-severity embedded RTOS issue and should not be read as evidence of active exploitation.

Exploit ScenarioDerived

On a Zephyr device built with userspace isolation and the experimental devmux feature, a low-privilege application thread that was never granted access to the multiplexer calls devmux_select_set() with the compile-time-constant device pointer (e.g. DEVICE_DT_GET(DT_NODELABEL(devmux0))). Because the syscall verifier performed no kernel-object or access check, the thread silently re-points the console/shell-uart multiplexer - suppressing log output, flipping the target under another thread, or redirecting shell traffic to a device it can observe. No public exploit code was provided, but the attack requires only normal syscall access and no special tooling.

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

Authorization bypass in Zephyr RTOS's experimental devmux pseudo-driver allows an unprivileged local user-mode thread to read or change which downstream device a multiplexer forwards to, letting it suppress, redirect, or flip console, log, and shell output. Only builds with CONFIG_USERSPACE=y, CONFIG_DEVMUX=y (and its CONFIG_DEVICE_MUTABLE dependency), and a zephyr,devmux devicetree node are affected, and the CVSS 3.1 score is 5.3 with vector AV:L/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L. No public exploit identified at time of analysis, and the impact is bounded to the devicetree-fixed downstream device set with no memory-corruption path.

RemediationAI

Apply or backport the upstream fix from commit 4b7f98345d8f894f4b8aabe52a2623d843669fac, referenced by advisory GHSA-8m8g-f5jf-x28x; the provided data states a vendor patch is available, but a released patched version is not independently confirmed. The fix registers devmux devices as K_OBJ_DRIVER_DEVMUX kernel objects and adds k_object_access_check() to both syscall verifiers, so it must be present in any build that keeps CONFIG_DEVMUX enabled. If the fix cannot be applied immediately, disable the experimental CONFIG_DEVMUX driver in production builds, which removes the vulnerable syscalls but sacrifices devmux console and shell-uart switching, or avoid enabling CONFIG_USERSPACE in configurations that require devmux, which removes the isolation boundary that exposes the flaw and is therefore a narrow stopgap rather than a full fix. Review devicetree sources for zephyr,devmux nodes to determine whether a build is exposed.

Affected VersionsENISA

Zephyr 3.6.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 devmux pseudo-driver in drivers/misc/devmux/devmux.c exposes devmux_select_get() and devmux_select_set() as system calls, and under CONFIG_USERSPACE their z_vrfy_* verifiers forwarded straight to the kernel implementations without k_object_access_check() or a driver-object check. Because DEVICE_DT_INST_DEFINE() registered each devmux instance with a NULL driver API pointer, scripts/build/gen_kobject_list.py skipped it, so the device had no struct k_object and no userspace permission could be granted or withheld. This is CWE-862 missing authorization rather than memory safety: the kernel implementations still validate the pointer against the static devmux table and bounds-check the index, and the CVSS vector AV:L/AC:L/PR:L confirms a local user-mode thread is required. The upstream fix declares __subsystem struct devmux_driver_api, attaches DEVICE_API(devmux, devmux_api) so each instance becomes a tracked K_OBJ_DRIVER_DEVMUX kernel object, and adds K_OOPS(devmux_inst_get(dev) == SIZE_MAX) plus K_OOPS(k_object_access_check(dev) != 0) to both verifiers.

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

A local user-mode thread (AV:L, PR:L) exploits the missing check reliably (AC:L); impact is Low across C/I/A because only the bounded downstream-device selection can be observed, altered, or disrupted.

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

DescriptionCVE.org

The device multiplexer pseudo-driver in drivers/misc/devmux/devmux.c exposes two system calls, devmux_select_get() and devmux_select_set(). When CONFIG_USERSPACE is enabled, their user-mode verifiers z_vrfy_devmux_select_get() and z_vrfy_devmux_select_set() forwarded directly to the kernel implementations without performing any kernel-object validation - no k_object_access_check() and no driver object check. Compounding this, DEVICE_DT_INST_DEFINE() registered devmux instances with a NULL driver API pointer, which causes scripts/build/gen_kobject_list.py to skip them entirely, so a devmux device had no struct k_object and no permission on it could be granted or withheld in the first place.

Any thread running in user mode can reach the defect: device pointers such as DEVICE_DT_GET(DT_NODELABEL(devmux0)) are compile-time constants available to application code, and the syscall accepted them from a thread that had never been granted access to the device. The kernel implementations do validate the pointer against the static devmux instance table and bounds-check the selection index, so this is not a memory-safety issue; the failure is purely one of authorization. Exposure requires CONFIG_USERSPACE=y together with the experimental CONFIG_DEVMUX=y (which depends on CONFIG_DEVICE_MUTABLE) and a zephyr,devmux devicetree node.

An unprivileged user-mode thread can read and change which downstream device a multiplexer forwards to, bypassing the userspace object-permission model. Because a devmux forwards the data, configuration and API of the selected device - its documented use being zephyr,console and zephyr,shell-uart switching - an attacker can suppress console, log and shell output, redirect that output to a downstream device it is able to observe, or flip the selection underneath another thread that is legitimately using the multiplexer. The impact is bounded to the devicetree-fixed set of downstream devices; no out-of-bounds access or arbitrary pointer dereference is reachable.

The fix declares __subsystem struct devmux_driver_api and attaches a DEVICE_API(devmux, devmux_api) instance to each devmux device so that it becomes a tracked K_OBJ_DRIVER_DEVMUX kernel object, and adds K_OOPS(devmux_inst_get(dev) == SIZE_MAX) plus K_OOPS(k_object_access_check(dev) != 0) to both verifiers.

Threat Intelligence Overview

EPSS Score
0.1%
Top 99% exploitable
Prevalence
Low
experimental, non-default Zephyr feature requiring userspace and mutable-device config
Data Quality
5 sources
Confidence: Medium

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· derived
None
System Exposure· derived
Small
Automatable· derived
No
Human Impact· derived
Medium

Priority Score

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

Attack Technique

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

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