IPBUF安全漏洞报告
English
CVE-2026-23324 CVSS 5.5 中危

CVE-2026-23324: Linux内核CAN驱动内存泄漏漏洞

披露日期: 2026-03-25
来源: 416baaa9-dc9f-4396-8d5f-8c081fb06d67

漏洞信息

漏洞编号
CVE-2026-23324
漏洞类型
内存泄漏
CVSS评分
5.5 中危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Linux Kernel

相关标签

Linux KernelMemory LeakDoSUSBCAN DriverLocal

漏洞概述

Linux内核中的etas_es58x USB驱动程序存在逻辑缺陷。在读取批量回调中,提交URB时未先进行锚定,导致在调用usb_kill_anchored_urbs()时可能发生内存泄漏,进而影响系统可用性。

技术细节

该漏洞位于Linux内核的drivers/net/can/usb/etas_es58x.c驱动程序中。驱动程序使用了URB(USB Request Block)锚定模式来管理USB请求块的生命周期。正确的逻辑应当是先将URB添加到锚点列表,然后再提交给USB核心,以确保在需要终止时(如调用usb_kill_anchored_urbs)能正确释放所有URB。然而,在读取批量回调函数中,代码错误地先提交了URB,随后才进行锚定操作。如果在提交和锚定之间的极短时间窗口内,系统尝试终止锚定的URB(例如设备断开或驱动卸载),该URB尚未被加入列表,因此不会被释放,导致内存泄漏。攻击者需具备本地低权限,通过触发特定的USB通信流程可反复利用此漏洞,最终导致系统内存耗尽和拒绝服务。

攻击链分析

STEP 1
步骤1
攻击者获得本地系统的低权限访问权限。
STEP 2
步骤2
攻击者触发系统连接或模拟ETAS ES58x系列USB CAN设备。
STEP 3
步骤3
攻击者向设备发送特定数据,触发驱动程序的读取批量回调函数。
STEP 4
步骤4
利用URB提交与锚定之间的时间窗口,触发设备断开或重置操作(调用usb_kill_anchored_urbs)。
STEP 5
步骤5
系统内存发生泄漏,攻击者重复此步骤导致资源耗尽,造成系统拒绝服务。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
/* * PoC Concept: Vulnerability Demonstration in etas_es58x * This code illustrates the vulnerable logic in the read bulk callback. */ #include <linux/usb.h> // Vulnerable implementation pattern void vulnerable_read_bulk_callback(struct urb *urb) { struct usb_anchor *anchor = get_anchor_from_context(urb); // VULNERABILITY: URB is submitted BEFORE being anchored. // If usb_kill_anchored_urbs() is called here, the URB is leaked. int ret = usb_submit_urb(urb, GFP_ATOMIC); if (ret) { // Handle error } else { // Anchoring happens after submission, creating a race window. usb_anchor_urb(urb, anchor); } } // Fixed implementation pattern void fixed_read_bulk_callback(struct urb *urb) { struct usb_anchor *anchor = get_anchor_from_context(urb); // FIX: Anchor the URB before submitting it. usb_anchor_urb(urb, anchor); int ret = usb_submit_urb(urb, GFP_ATOMIC); if (ret) { // If submission fails, unanchor to prevent leaks usb_unanchor_urb(urb); } }

影响范围

Linux Kernel < 18eee279e9b5bff0db1aca9475ae4bc12804f05c
Linux Kernel < 2185ea6e4ebcb61d1224dc7d187c59723cb5ad59
Linux Kernel < 5eaad4f768266f1f17e01232ffe2ef009f8129b7

防御指南

临时缓解措施
建议立即升级Linux内核以修复此逻辑错误。如果暂时无法升级,应限制对受影响USB硬件设备的物理访问和逻辑访问,并监控内核内存使用情况以防止资源耗尽。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表