Academics have developed a new tool that allowed them to discover 26 previously unidentified vulnerabilities in the USB driver stack used by many popular operating systems including Linux, macOS, Windows and FreeBSD.
Purdue University’s Hui Peng and the Swiss Federal Institute of Technology Lausanne’s Mathias Payer created a new tool called USBFuzz which they provided further details on in a paper titled “USBFuzz: A Framework for Fuzzing USB Drivers by Device Emulation”, that reads:
“We present USBFuzz, a portable, flexible, and modular framework for fuzz testing USB drivers. At its core, USBFuzz uses a software-emulated USB device to provide random device data to drivers (when they perform IO operations).”
The tool is used for fuzzing which involves deliberately placing or injecting garbled data into a specific application or program. If the software fails to properly handle the unexpected data, developers can then identity potential security weaknesses and address them before users are put at risk.
After developing USBFuzz, the researchers tested the tool on nine recent versions of the Linux kernel (v4.14.81, v4.15,v4.16, v4.17, v4.18.19, v4.19, v4.19.1, v4.19.2, and v4.20-rc2), FreeBSD12, macOS 10.15 and both Windows 8 and 10.
Following their tests, they discovered one bug in FreeBSD, three in macOS and four in Windows 8 and Windows 10. However, of the 26 new bugs the researchers found, 18 were found in Linux. Sixteen of the bugs were high-severity memory bugs in a number of Linux subsystems (USB core, USB sound and net-work), one bug was found in the Linux USB host controller driver and the last bug was discovered in a USB camera driver.
The researchers have since reported these bugs to the Linux kernel team and they also submitted their ideas for patches to make things a bit easier for kernel developers. Of the 18 bugs USBFuzz found in Linux, 11 of them have received a patch since the researchers submitted their initial reports last year. Additional patches are expected to be released in the near future for the seven remaining issues.
The researchers are also planning to release USBFuzz on GitHub as an open source project so that others can use their tool for fuzzing.