目标达成 感谢每一位支持者 — 我们达成了 100% 目标!

目标: 1000 元 · 已筹: 1359 元

100%

CVE-2026-87038— Zephyr i3c_transfer() 竞态条件导致内核控制流劫持漏洞

一分钟漏洞结论

影响对象
zephyrproject zephyr
利用判断
尚无明确在野利用证据,仍需结合暴露面评估
建议动作
优先检查厂商安全公告和参考链接中的修复版本;无法立即升级时,限制受影响服务暴露并加强监测。

系统调用的用户态验证处理程序 (位于 )在原地验证了由调用者提供的 结构,而非对其进行快照(snapshot)备份。该处理程序仅确认了描述符对调用线程可读( ),读取了一次 以通过 进行检查,随后便将调用者提供的实时指针向下传递。实现函数 会再次从该用户内存中读取 ,并通过 进行分发,因此实际使用的总线并不一定是之前经过验证的总线。在除 构建之外的配置中, 不会执行运行时类型检查。 在启用了 且包含 I3C 控制器驱动程序的构建版本中,一个已获得 I3C 设备对象权限的用户线程,可利用同一内存域中的另一个线程进行攻

CVSS 7.0 · High
获取后续新漏洞提醒 登录后订阅

一、 漏洞 CVE-2026-87038 基础信息

漏洞信息

对漏洞内容有疑问?看看神龙的深度分析是否有帮助!
查看神龙十问 ↗

尽管我们使用了先进的大模型技术,但其输出仍可能包含不准确或过时的信息。神龙努力确保数据的准确性,但请您根据实际情况进行核实和判断。

Vulnerability Title
Time-of-check/time-of-use double fetch in the Zephyr i3c_transfer() syscall handler allows kernel-mode control-flow hijack from user mode
来源: CVE Program / CVE List V5
Vulnerability Description
The user-mode verification handler for the i3c_transfer() system call, z_vrfy_i3c_transfer() in drivers/i3c/i3c_handlers.c, validated the caller-supplied struct i3c_device_desc in place instead of snapshotting it. It confirmed only that the descriptor was readable by the calling thread (K_SYSCALL_MEMORY_READ()), read target->bus once to check it with K_SYSCALL_OBJ(), and then passed the caller's live pointer down. The implementation z_impl_i3c_transfer() re-reads target->bus from that user memory and dispatches through it as DEVICE_API_GET(i3c, target->bus)->i3c_xfers(...), so the bus that was validated is not necessarily the bus that is used. DEVICE_API_GET() performs no runtime type check outside CONFIG_DEVICE_API_ASSERT builds. On a build with CONFIG_USERSPACE and an I3C controller driver, a user thread that has been granted an I3C device object can exploit this with a second thread in the same memory domain: one thread calls i3c_transfer() while the other rewrites the bus field of the descriptor. The window between the check and the use spans the num_msgs validation, the message-array access check, a stack VLA allocation and a memcpy() of up to 32 struct i3c_msg, so the race is repeatable and can simply be retried until it lands. When the substitution succeeds, the kernel dereferences an attacker-chosen pointer as a struct device, loads a function pointer from the attacker-controlled api table and calls it in supervisor mode with attacker-influenced arguments. This yields kernel-mode code execution from an unprivileged user thread — a complete escape of the userspace memory-protection sandbox; lesser outcomes are an arbitrary two-level kernel read or a kernel fault. Builds without CONFIG_USERSPACE, or without an I3C driver, are unaffected. The fix copies the descriptor into a kernel-stack local with k_usermode_from_copy(), validates the bus in that copy, and dispatches on the copy, so the validated value is provably the value used.
来源: CVE Program / CVE List V5
CVSS Information
CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
来源: CVE Program / CVE List V5
Vulnerability Type
检查时间与使用时间(TOCTOU)的竞争条件
来源: CVE Program / CVE List V5

受影响产品

厂商 产品 影响版本 CPE 订阅
zephyrproject zephyr 3.2.0 ~ 4.3.2 -

二、漏洞 CVE-2026-87038 的公开POC

# POC 描述 源链接 神龙链接
AI 生成 POC 高级

未找到公开 POC。

登录以生成 AI POC

三、漏洞 CVE-2026-87038 的情报信息

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

CVE-2026-87038 其他参考 (2)

同批安全公告 · zephyrproject · 2026-11-04 · 共 8 条

CVE-2026-16511 8.8 HIGH RTIO 系统调用验证器未验证用户指针漏洞
CVE-2026-87040 8.3 HIGH 蓝牙 LE 控制器越界读写漏洞
CVE-2026-87039 7.8 HIGH I2S 配置系统调用处理程序远程代码执行漏洞
CVE-2026-87041 7.8 HIGH RTIO 系统调用验证器内存权限检查反转漏洞
CVE-2026-87044 6.5 MEDIUM Mbed TLS 加密组件远程拒绝服务漏洞
CVE-2026-85036 5.7 MEDIUM 蓝牙 AVDTP 会话重用导致系统工作队列损坏漏洞
CVE-2026-87043 4.8 MEDIUM glibc sys_rand_get 熵设备未就绪时返回未写缓冲区漏洞

IV. Related Vulnerabilities