普渡大学的研究员 Hui Peng 和瑞士洛桑联邦理工学院的研究员 Mathias Payer 在多种操作系统(如 Linux、macOS、Windows 和 FreeBSD)使用的 USB 驱动栈中发现了26个新漏洞。他们表示这些漏洞是通过自己创建的模糊测试新工具 USBFuzz 找到的。
模糊测试工具即允许安全研究员向其它程序发送大量无效、异常或随机数据作为输入的应用程序。安全研究员之后分析所测软件发现新bug 的行为,而这些新 bug 可能会被恶意利用。
可移植的USB模糊测试工具
为测试 USB 驱动,这两名研究员开发了旨在测试当代操作系统 USB 驱动栈的新型模糊测试工具。他们指出,“USBFuzz 的核心使用模拟软件的 USB 设备向(正在执行 IO 操作的)驱动提供随机设备数据。由于模拟的 USB 设备在设备层面运作,因此将其移植到其它平台上非常简单。”
由此研究团队不仅能够在 Linux 上(多数模糊测试程序运作的地方)而且还能在其它操作系统上测试 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(评估该工具时的最新版本)
FreeBSD 12(最新版本)
MacOS 10.15 Catalina(最新版本)
Windows(版本8和版本10,安装了最新的安全更新
找到26个新 bug
测试结果显示,他们借助 USBFuzz 共发现了26个新 bug。研究人员在 FreeBSD 中发现了一个 bug,在 MacOS 中发现了3个 bug(其中2个导致异常重启,1个导致系统冻结),在 Windows 8 和 Windows 10 中发现了4个 bug(导致蓝屏死机)。
不过,大多数漏洞且最严重的漏洞位于 Linux 中,共18个。其中16个是高危内存漏洞,影响多个 Linux 子系统(USB core、USB sound 和 net-work),1个bug 位于 Linux USB 主机控制器驱动中,最后1个位于 USB 摄像头驱动中。
研究员表示已将 bug 告知 Linux 内核团队,并提供补丁提案以减少“内核开发人员在修复所报告漏洞时的负担”。在这18个 Linux bug 中,研究人员表示其中11个在去年首次发布报告时修复,而其中的10个已修复漏洞获得 CVE 编号。其余7个漏洞有望在不久之后修复,“其余的 bug 有两类,一类是仍在捕获中/披露中,另一类是其他研究员也发现和报告过的”。
USBFuzz 或将开源
Payer在发布白皮书草案时说明了他们在 USBFuzz 中所做的工作。他们打算在2020年8月举行的 Usenix 安全虚拟大会上展示其研究成果。
之前,谷歌安全工程师也曾使用名为 syzkaller 的谷歌自制模糊测试工具在2017年11月发现了79个影响 Linux 内核 USB 驱动的 bug。
Peng和 Payer 表示,USBFuzz 的功能超过之前的工具如 vUSBf、zyzkaller 和 usb-fuzzer,原因是USBFuzz 可使用户对测试数据拥有更大的控制权并且可在操作系统之前移植,而之前的工具通常只能在 *NIX 系统上发挥作用。
会议举行完后,这两名研究员计划在 GitHub 上开源 USBFuzz。
完整论文请见:
http://hexhive.epfl.ch/publications/files/20SEC3.pdf
原文链接
https://www.zdnet.com/article/new-fuzzing-tool-finds-26-usb-bugs-in-linux-windows-macos-and-freebsd/
声明:本文来自代码卫士,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。