CVE-2026-23347该漏洞存在于Linux内核的F81604 USB驱动程序中。问题出在读取批量回调函数未能正确锚定USB请求块(URB)。根据USB核心规范,使用锚定模式的URB必须在提交前完成锚定,否则在调用`usb_kill_anchored_urbs()`进行清理时,该URB将无法被追踪,从而导致内存资源泄露。此漏洞可能被本地低权限攻击者利用,通过持续触发设备操作耗尽系统内存,导致拒绝服务。
漏洞的核心原理涉及Linux内核USB子系统的URB生命周期管理机制。驱动程序通常使用`usb_anchor_urb()`将URB挂载到锚点链表中,以便在设备断开连接或驱动卸载时,能够通过`usb_kill_anchored_urbs()`安全、彻底地取消并释放所有待处理的URB。在F81604驱动的读取批量回调逻辑中,代码存在顺序错误:它在提交URB之后才进行锚定操作(或完全遗漏了该步骤)。这产生了一个竞态条件窗口:如果在提交URB之后、锚定操作之前,系统触发了清理流程(如设备拔出或驱动卸载),清理函数将无法找到并释放该URB。随着漏洞被反复触发,未释放的内核内存对象会不断累积,最终导致内核内存耗尽,引发系统崩溃或严重卡顿。