新的模糊工具在Linux、Windows、MacOS和FreeBSD中发现26个USB错误

2020-05-28 05:44:09

学者们说,他们在Linux、MacOS、Windows和FreeBSD等操作系统使用的USB驱动程序堆栈中发现了26个新漏洞。

由普渡大学(Purdue University)的惠鹏(音译)和瑞士洛桑联邦理工学院的马蒂亚斯·佩耶(Mathias Payer)组成的研究团队表示,所有的漏洞都是通过他们创建的一种名为USBFuzz的新工具发现的。

这个工具就是安全专家所说的绒毛器。模糊器是允许安全研究人员将大量无效、意外或随机数据作为输入发送到其他程序的应用程序。

然后,安全研究人员分析测试的软件如何发现新的漏洞,其中一些漏洞可能会被恶意利用。

为了测试USB驱动程序,彭和佩耶开发了USBFuzz,这是一种专门为测试现代操作系统的USB驱动程序栈而设计的新的Fuzz。

研究人员说,USBFuzz的核心是使用软件模拟的USB设备向驱动程序提供随机设备数据(当他们执行IO操作时)。

由于模拟的USB设备在设备级别工作,因此将其移植到其他平台非常简单。";

这使得研究小组不仅可以在大多数Fuzzer程序工作的Linux上测试USBFuzz,还可以在其他操作系统上测试USBFuzz。研究人员表示,他们对USBFuzz进行了测试:

9 Linux内核的最新版本:v4.14.81、v4.15、v4.16、v4.17、v4.18.19、v4.19、v4.19.1、v4.19.2和v4.20-rc2(评估时的最新版本)。

在他们的测试之后,研究小组说,在USBFuzz的帮助下,他们总共发现了26个新的漏洞。

研究人员在FreeBSD中发现了一个漏洞,在MacOS中发现了三个漏洞(两个导致计划外重启,一个系统冻结),在Windows 8和Windows 10中发现了四个漏洞(导致蓝屏死亡)。

然而,绝大多数且最严重的错误都是在Linux中发现的--总共18个。

16个是各种Linux子系统(USB核心、USB声音和网络)中具有高安全性影响的内存错误,一个错误驻留在Linux USB主机控制器驱动程序中,最后一个驻留在USB相机驱动程序中。

彭和佩耶说,他们向Linux内核团队报告了这些错误,并提出了修补漏洞的补丁,以减轻内核开发人员在修复报告的漏洞时的负担。

研究小组表示,在18个Linux漏洞中,有11个自去年首次报告以来收到了补丁。这11个漏洞中有10个还收到了CVE,这是一个分配给主要安全漏洞的独特代码。

研究人员说,剩下的漏洞分为两类:仍在禁运或正在披露的漏洞,以及那些同时被其他研究人员发现和报告的漏洞。

Payer昨天公布了研究团队的白皮书草稿,描述了他们在USBFuzz上的工作。彭和佩耶计划在定于2020年8月举行的Usenix安全研讨会虚拟安全会议上展示他们的研究成果。

过去也进行过类似的工作。2017年11月,一名谷歌安全工程师使用谷歌制造的名为syzkaller的Fuzzer发现了79个影响Linux内核USB驱动程序的漏洞。

Peng和Payer表示,USBFuzz优于之前的工具,如vUSBf、syzkaller和usb-fuzzer,因为它们的工具为测试人员提供了对测试数据的更多控制,而且还可以跨操作系统移植,而不像上面所有的工具通常只能在*Nix系统上工作。

USBFuzz计划在Peng和Payer的Usenix Talk之后作为开源项目在GitHub上发布。回购将在这里提供。

Peng和Payer的论文名为“USBFuzz:A Framework for Fuzing USB Drivers by Device Emulation”(USBFuzz:A Framework for Fuzing USB Drivers by Device Emulation),这里和这里都有PDF格式的文章。