Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessRun unprivileged user-mode thread
-
DeliveryObtain compile-time devmux device pointer
-
ExploitInvoke devmux_select_set syscall
-
ExecutionBypass missing object access check
-
ImpactRedirect 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. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
Affected Packages
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
AV:L/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L
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.
Primary rating from Vendor (zephyr).
CVSS VectorVendor: zephyr
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
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
Potential off-by-one buffer overflow vulnerability in the Zephyr fuse file system. Rated critical severity (CVSS 10.0),
An out-of-bounds write in the Zephyr RTOS DNS resolver (dns_unpack_name()) lets a crafted DNS response corrupt memory on
Possible variant of CVE-2021-3434 in function le_ecred_reconf_req. Rated critical severity (CVSS 9.8), this vulnerabilit
Unchecked user input length in /subsys/net/l2/wifi/wifi_shell.c can cause buffer overflows. Rated critical severity (CVS
Potential buffer overflow vulnerability in the Zephyr CAN bus subsystem. Rated critical severity (CVSS 9.8), this vulner
Integer Underflow in 6LoWPAN IPHC Header Uncompression in Zephyr. Rated critical severity (CVSS 9.8), this vulnerability
Buffer overflow in Zephyr USB DFU DNLOAD. Rated critical severity (CVSS 9.8), this vulnerability is remotely exploitable
DOS: Incorrect 802154 Frame Validation for Omitted Source / Dest Addresses. Rated critical severity (CVSS 9.8), this vul
zephyr-rtos version 1.12.0 contains a NULL base pointer reference vulnerability in sys_ring_buf_put(), sys_ring_buf_get(
Potential buffer overflow vulnerabilities n the Zephyr Bluetooth subsystem. Rated critical severity (CVSS 9.6), this vul
The documentation specifies that the BT_GATT_PERM_READ_LESC and BT_GATT_PERM_WRITE_LESC defines for a Bluetooth characte
Potential buffer overflows in the Bluetooth subsystem due to asserts being disabled in /subsys/bluetooth/host/hci_core.c
EUVD-2026-107488
NVD
CVE.org
EPSS
GitHub
VulDB
Exploit-DB