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

目标: 1000 元 · 已筹: 1359 元

100%

CVE-2026-85035— CAN RX 过滤器动态消息队列释放后使用漏洞

一分钟漏洞结论

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

系统调用会安装一个 CAN 接收过滤器,其回调函数(位于 中的 )会将调用方提供的 指针作为 传递。控制器驱动程序将该原始指针存储在其过滤器表中,并在每次接收到匹配的数据帧时,在接收路径中对其进行解引用。系统调用验证器 (位于 中)仅使用 对消息队列进行了验证;该验证仅检查对象在某一时刻的类型、初始化状态以及调用者权限,并未涉及对象的生命周期。 在启用 和 的构建配置下,一个已获得 CAN 设备访问权限的非特权用户态线程可以获取一个由其完全控制生命周期的消息队列:通过调用 和 完成分配与初始化。此类对象的生命周期仅

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

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

漏洞信息

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

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

Vulnerability Title
Use-after-free via dynamically allocated message queue retained by the CAN RX filter
来源: CVE Program / CVE List V5
Vulnerability Description
The can_add_rx_filter_msgq() system call installs a CAN RX filter whose callback (can_msgq_put() in drivers/can/can_common.c) is handed the caller's struct k_msgq * as user_data. The controller driver stores that raw pointer in its filter table and dereferences it from the RX path every time a matching frame arrives. The system call verifier z_vrfy_can_add_rx_filter_msgq() in drivers/can/can_handlers.c validated the queue only with K_SYSCALL_OBJ(), which is a point-in-time check of type, initialization and caller permission and says nothing about the object's lifetime. On a build with CONFIG_USERSPACE=y and CONFIG_DYNAMIC_OBJECTS=y, an unprivileged user-mode thread that has been granted access to a CAN device can obtain a message queue whose lifetime it fully controls: k_object_alloc(K_OBJ_MSGQ) followed by k_msgq_alloc_init(). The lifetime of such an object is driven solely by its permission bitmask, and a pointer retained by the kernel is not represented there. After registering the filter, the thread calls k_object_release() — or simply terminates — and unref_check() frees the struct k_msgq storage while the CAN driver still holds the pointer. The next matching CAN frame causes k_msgq_put() to run in supervisor context against freed memory that the attacker can have groomed with another kernel allocation: the frame payload is memcpy()d through the reused block's write_ptr, and the queue's wait_q (and poll_events under CONFIG_POLL) list nodes are manipulated. This yields kernel-heap corruption reachable from a user-mode thread, defeating the isolation CONFIG_USERSPACE is intended to provide; the same dangling pointer also arises benignly when an application thread exits without calling can_remove_rx_filter(). The fix validates the queue with K_SYSCALL_OBJ_STATIC(), which additionally rejects objects carrying K_OBJ_FLAG_ALLOC, so only statically defined queues (CAN_MSGQ_DEFINE()) may be registered from user mode. Supervisor-mode callers bypass the verifier and must themselves keep the queue valid until the filter is removed.
来源: CVE Program / CVE List V5
CVSS Information
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
来源: CVE Program / CVE List V5
Vulnerability Type
释放后使用
来源: CVE Program / CVE List V5

受影响产品

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

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

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

未找到公开 POC。

登录以生成 AI POC

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

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

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

同批安全公告 · zephyrproject · 2026-11-03 · 共 4 条

CVE-2026-85034 6.7 MEDIUM 蓝牙 GATT 客户端越界写入漏洞
CVE-2026-85032 4.8 MEDIUM MCTP over USB 绑定在使用后释放漏洞
CVE-2026-85033 4.6 MEDIUM 蓝牙 AVRCP 目标:断开连接时未清理发送导致响应泄露漏洞

IV. Related Vulnerabilities