近日多名学术界人士表示,在Linux、macOS、Windows和FreeBSD等操作系统所使用的USB驱动堆栈中发现了26个新的漏洞。这支科研团队由普渡大学的Hui Peng、瑞士联邦理工学院洛桑分校的Mathias Payer带领,所有漏洞都是通过他们创建的新工具USBFuzz发现的。
图片来自于 WiKiMedia
这类工具被团队成员称之为“模糊器”(fuzzer)。模糊器是多款应用程序的集合,能够帮助安全研究人员将大量无效、意外或者随机数据输入其他应用程序。然后,安全研究人员分析被测试软件的行为方式,以发现新的bug,其中一些可能被恶意利用。
为了测试USB驱动,Peng和Payer共同开发了USBFuzz,这是一种专门用于测试现代操作系统的USB驱动堆栈的新型模糊器。研究人员表示:“其核心部分,USBFuzz使用软件仿真的USB设备来向驱动程序提供随机的设备数据(当他们执行IO操作时)。”
团队表示:“由于仿真的USB设备是在设备层面工作的,因此将其移植到其他平台上是很直接的。”这使得研究团队不仅可以在Linux上测试USBFuzz,还可以在其他操作系统上进行测试。
研究人员表示,他们在以下平台上测试了USBFuzz。
● Linux内核的9个最新版本:v4.14.81、v4.15、v4.16、v4.17、v4.18.19、v4.19、v4.19、v4.19.1、v4.19.2和v4.20-rc2(评估时的最新版本)。
● FreeBSD 12 (最新版本)
● MacOS 10.15 Catalina(最新版本)
● Windows(8和10版本,并安装了最新的安全更新)
在测试之后,研究团队表示,在USBFuzz的帮助下,他们一共发现了26个新的bug。
研究人员在FreeBSD中发现了一个bug,在MacOS中发现了三个(两个导致计划外重启,一个导致系统冻结),在Windows 8和Windows 10中发现了四个(导致死亡蓝屏)。
最严重的是针对Linux的,总共有18个。其中16个是针对Linux各个子系统(USB core, USB sound和net-work)的高危内存漏洞,此外还有1个是针对Linux的USB
host主控驱动,还有一个是USB摄像头驱动。
Peng和Payer表示,他们向Linux内核团队报告了这些bug,并提出了补丁建议,以减轻 "内核开发人员在修复报告的漏洞时的负担"。
研究团队表示,在这18个Linux漏洞中,有11个自去年首次报告以来,他们收到了补丁。在这11个bug中,有10个还收到了CVE,这是一个被分配给重大安全漏洞的唯一代码。
相关论文《USBFuzz: A Framework for Fuzzing USB Drivers by Device Emulation》,可以访问这里 和 这里.