CVE-2023-53644CVE-2023-53644是Linux内核中media子系统的radio-shark和radio-shark2 USB驱动存在的安全漏洞。该漏洞源于驱动程序未对所使用的USB端点进行检查,未验证端点是否实际存在以及是否具有适当的类型。当使用syzbot模糊测试工具对驱动进行测试时,可以触发内核警告(WARNING),具体表现为USB核心层在调用usb_submit_urb()时检测到管道类型不匹配(pipe 1 != type 3),从而引发系统警告。
该漏洞的影响范围涉及Linux内核中的USB radio-shark/radio-shark2驱动,这些驱动用于支持某些FM/AM收音机USB设备。漏洞可能导致系统稳定性下降,触发内核警告并影响系统可用性。虽然CVSS评分为5.5(中危),且需要本地低权限访问才能利用,但其对系统可用性的影响为高(A:H),意味着成功利用可能导致系统崩溃或不可用状态。
该漏洞由Linux内核社区发现并修复,修复方式为在驱动中添加对USB端点存在性和类型的检查,确保驱动仅在端点配置正确的情况下执行操作。修复涉及多个稳定版本的内核补丁。
该漏洞的技术原理在于radio-shark2驱动中的shark_write_reg()函数(位于drivers/media/radio/radio-shark2.c第88行)通过usb_bulk_msg()提交USB请求块(URB),但在提交之前未对USB端点的类型和方向进行充分验证。
具体技术细节如下:
1. 驱动通过usb_bulk_msg()函数发送批量传输请求,该函数内部调用usb_start_wait_urb(),最终调用usb_submit_urb()。
2. 在usb_submit_urb()中(drivers/usb/core/urb.c第504行),内核会检查URB的管道设置是否与端点类型匹配。
3. 当驱动未检查端点类型时,如果设备的端点配置与驱动预期不符(例如端点类型为中断传输而非批量传输),则会导致管道类型不匹配错误(pipe 1 != type 3)。
4. 这种不匹配会触发内核WARNING,虽然不会直接导致安全漏洞,但可能影响系统稳定性,且在某些情况下可能导致系统不可用。
利用方式:攻击者可以通过插入特制的USB设备(模拟radio-shark设备但使用错误的端点配置)来触发此漏洞。由于需要本地低权限访问(PR:L),攻击者需要物理接触或本地权限才能插入恶意USB设备。漏洞触发后可能导致内核警告、系统不稳定甚至系统崩溃,影响系统的可用性。
修复方案是在驱动初始化阶段添加端点检查,验证端点的存在性和类型是否符合驱动要求,确保只有正确的端点配置才能继续驱动操作。