CVE-2025-68657CVE-2025-68657是Espressif ESP-IDF USB Host HID(人机接口设备)驱动程序中的一个高危安全漏洞。该漏洞存在于1.1.0之前的所有版本中,由于hid_host_device_close()函数存在逻辑缺陷,可能导致同一个usb_transfer_t对象被释放两次(双重释放)。攻击者可以利用此漏洞在USB事件回调和用户代码之间创建竞态条件,当两者同时尝试关闭一个处于READY状态的接口时,会触发堆元数据损坏,进而可能导致拒绝服务(系统崩溃)或潜在的代码执行。虽然该漏洞需要物理接触设备才能利用(攻击向量为物理),且攻击复杂度较高,但鉴于其对系统完整性和机密性的严重影响,建议相关用户尽快采取修复措施。
该漏洞的根本原因在于ESP-IDF USB Host HID Driver中缺少适当的同步机制。具体来说,hid_host_device_close()函数在释放usb_transfer_t对象时,没有正确处理USB事件回调和用户代码之间的并发访问。hid_iface_t状态被事件回调和用户代码共享,但没有任何锁保护。当USB设备断开连接时,事件回调可能触发接口关闭;同时,用户代码也可能调用hid_host_device_close()。这种竞态条件导致两个执行路径都可能尝试释放同一个usb_transfer_t结构,从而造成双重释放。双重释放会破坏堆内存的元数据结构,可能导致堆溢出或下溢,最终造成系统崩溃或被攻击者利用执行任意代码。攻击者需要物理插入恶意HID设备或利用现有的HID设备触发此漏洞,攻击复杂度较高但可行性存在。修复版本1.1.0通过添加适当的锁定机制和重新设计资源管理逻辑来解决此问题。