PrIntFuzz: Fuzzing Linux Drivers via Automated Virtual Device Simulation

Zheyu Ma, Bodong Zhao, Letu Ren, Zheming Li, Siqi Ma, Xiapu Luo, Chao Zhang

Research output: Chapter in book / Conference proceedingConference article published in proceeding or bookAcademic researchpeer-review

14 Citations (Scopus)

Abstract

Linux drivers share the same address space and privilege with the core of the kernel but have a much larger code base and attack surface. The Linux drivers are not well tested and have weaker security guarantees than the kernel. Missing support from hardware devices, existing fuzzing solutions fail to cover a large portion of the driver code, e.g., the initialization code and interrupt handlers. In this paper, we present PrIntFuzz, an efficient and universal fuzzing framework that can test the overlooked driver code, including the PRobing code and INTerrupt handlers. PrIntFuzz first extracts knowledge from the driver through inter-procedural field-sensitive, path-sensitive, and flow-sensitive static analysis. Then it utilizes the information to build a flexible and efficient simulator, which supports device probing, hardware interrupts emulation and device I/O interception. Lastly, PrIntFuzz applies a multi-dimension fuzzing strategy to explore the overlooked code. We have developed a prototype of PrIntFuzz and successfully simulated 311 virtual PCI (Peripheral Component Interconnect) devices, 472 virtual I2C (Inter-Integrated Circuit) devices, 169 virtual USB (Universal Serial Bus) devices, and found 150 bugs in the corresponding device drivers. We have submitted patches for these bugs to the Linux kernel community, and 59 patches have been merged so far. In a control experiment of Linux 5.10-rc6, PrIntFuzz found 99 bugs, while the state-of-the-art fuzzer only found 50. PrIntFuzz covers 11,968 basic blocks on the latest Linux kernel, while the state-of-the-art fuzzer Syzkaller only covers 2,353 basic blocks.
Original languageEnglish
Title of host publicationProceedings of the 31st ACM SIGSOFT International Symposium on Software Testing and Analysis (ISSTA)
PublisherAssociation for Computing Machinery (ACM)
Pages404-416
Number of pages808
ISBN (Electronic)10.1145/3533767
ISBN (Print)9781450393799
Publication statusPublished - 18 Jul 2022
Event31st ACM SIGSOFT International Symposium on Software Testing and Analysis (ISSTA'22) - Virtual
Duration: 18 Jul 202222 Jul 2022
https://conf.researchr.org/program/issta-2022/program-issta-2022/

Competition

Competition31st ACM SIGSOFT International Symposium on Software Testing and Analysis (ISSTA'22)
Abbreviated titleISSTA
Period18/07/2222/07/22
Internet address

Fingerprint

Dive into the research topics of 'PrIntFuzz: Fuzzing Linux Drivers via Automated Virtual Device Simulation'. Together they form a unique fingerprint.

Cite this