Goal Reached Thanks to every supporter — we hit 100%!

Goal: 1000 CNY · Raised: 1359 CNY

100%

CVE-2026-19947— Missing kernel object permission check in devmux syscalls allows unprivileged user threads to retarget a device multiplexer

Quick assessment

Affected
zephyrproject zephyr
Exploitation
No confirmed in-the-wild exploitation; assess based on exposure
Recommended action
Check the vendor advisory and references for a fixed version. If immediate upgrade is impossible, restrict exposure and increase monitoring.

在 中,设备多路复用器伪驱动(device multiplexer pseudo-driver)暴露了两个系统调用: 和 。当启用 配置时,其用户态验证函数 和 会直接将请求转发至内核实现,而未执行任何内核对象验证——既未调用 ,也未进行驱动对象检查。更严重的是, 在注册 devmux 实例时使用了空(NULL)的驱动 API 指针,这导致构建脚本 完全跳过这些实例。因此,devmux 设备既没有 结构体,也无法在初始阶段授予或拒绝其访问权限。 任何运行在用户态的线程均可触发此缺陷:诸如 的设备指针是编译期常量,应

CVSS 5.3 · Medium

Affected Version Matrix 1

VendorProduct Version RangeStatus
zephyrproject zephyr 3.6.0< 4.5.0 affected
Get alerts for future matching vulnerabilities Log in to subscribe

I. Basic Information for CVE-2026-19947

Vulnerability Information

Have questions about the vulnerability? See if Shenlong's analysis helps!
View Shenlong Deep Dive ↗

Although we use advanced large model technology, its output may still contain inaccurate or outdated information.Shenlong tries to ensure data accuracy, but please verify and judge based on the actual situation.

Vulnerability Title
Missing kernel object permission check in devmux syscalls allows unprivileged user threads to retarget a device multiplexer
Source: CVE Program / CVE List V5
Vulnerability Description
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.
Source: CVE Program / CVE List V5
CVSS Information
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L
Source: CVE Program / CVE List V5
Vulnerability Type
授权机制缺失
Source: CVE Program / CVE List V5

Affected Products

Vendor Product Affected Versions CPE Subscribe
zephyrproject zephyr 3.6.0 ~ 4.5.0 -

II. Public POCs for CVE-2026-19947

# POC Description Source Link Shenlong Link
AI-Generated POC Premium

No public POC found.

Login to generate AI POC

III. Intelligence Information for CVE-2026-19947

请登录查看更多情报信息。

Other References for CVE-2026-19947 (2)

Same Patch Batch · zephyrproject · 2026-10-21 · 8 CVEs total

CVE-2026-19676 7.8 HIGH PECI transfer syscall verifier does not validate embedded user buffer pointers, allowing a
CVE-2026-79976 7.1 HIGH NULL pointer dereference in the MCTP I2C+GPIO target binding triggerable by a peer I2C con
CVE-2026-78118 7.0 HIGH Race condition on kernel wait queues: unlocked z_waitq_head() read in the timer expiration
CVE-2026-78119 6.3 MEDIUM Out-of-bounds write in the Nuvoton NPCX eSPI Target-Attached-Flash receive path from an un
CVE-2026-78116 5.2 MEDIUM Double free of an RTIO submission in the Broadcom AFBR-S50 sensor driver data-evaluation e
CVE-2026-78117 4.2 MEDIUM Race condition on shared HCI TX descriptor in the Infineon PSOC 6 BLESS Bluetooth driver c
CVE-2026-18748 3.5 LOW Out-of-bounds read in Bluetooth Classic A2DP codec information element handling

IV. Related Vulnerabilities

V. Comments for CVE-2026-19947

No comments yet


Leave a comment