论文阅读
USB用于主机与各种外部设备的连接与通信。攻击者可以利用该接口对操作系统内核、设备驱动进行恶意攻击。模糊测试(fuzzing)作为一种广泛应用的自动化测试技术,可以用于发现软件中的漏洞。然而,对USB设备驱动进行模糊测试需要克服众多挑战:跨越软硬件障碍、输入设备数据到驱动程序等。
该论文提出的 USBFuzz 是一种可移植、灵活且模块化的 USB 驱动模糊测试框架,其核心是使用软件仿真 USB 设备为驱动程序提供随机设备数据。作者对 Linux 内核中的大量且广泛的 USB 驱动程序应用了 (i) 覆盖引导的模糊测试;(ii) 在 FreeBSD、MacOS 和 Windows 中通过 Linux 输入进行的dump fuzzing;以及 (iii) 针对 USB 网络摄像头驱动程序的重点模糊测试。
最后,作者使用 USBFuzz 共发现了 26 个新漏洞,包括 16 个在不同 Linux 子系统(USB 核心、USB 声音和网络)中具有高安全影响的内存漏洞,FreeBSD 中发现了一个漏洞,MacOS 中发现了三个漏洞,Windows 8 和 Windows 10 中发现了四个漏洞,以及在 Linux USB 主控制器驱动程序中发现了一个漏洞,USB 摄像头驱动程序中又发现了一个漏洞。在 Linux 漏洞中,修复并上游了 11 个漏洞,并获得了 10 个 CVE。