HFL: Hybrid Fuzzing on the Linux Kernel

被引:79
|
作者
Kim, Kyungtae [1 ]
Jeong, Dae R. [2 ]
Kim, Chung Hwan [3 ]
Jang, Yeongjin [4 ]
Shin, Insik [2 ]
Lee, Byoungyoung [1 ,5 ]
机构
[1] Purdue Univ, W Lafayette, IN 47907 USA
[2] Korea Adv Inst Sci & Technol, Daejeon, South Korea
[3] NEC Labs Amer, Princeton, NJ USA
[4] Oregon State Univ, Corvallis, OR 97331 USA
[5] Seoul Natl Univ, Seoul, South Korea
基金
新加坡国家研究基金会;
关键词
D O I
10.14722/ndss.2020.24018
中图分类号
TP [自动化技术、计算机技术];
学科分类号
0812 ;
摘要
Hybrid fuzzing, combining symbolic execution and fuzzing, is a promising approach for vulnerability discovery because each approach can complement the other. However, we observe that applying hybrid fuzzing to kernel testing is challenging because the following unique characteristics of the kernel make a naive adoption of hybrid fuzzing inefficient: 1) having indirect control transfers determined by system call arguments, 2) controlling and matching internal system state via system calls, and 3) inferring nested argument type for invoking system calls. Failure to handling such challenges will render both fuzzing and symbolic execution inefficient, and thereby, will result in an inefficient hybrid fuzzing. Although these challenges are essential to both fuzzing and symbolic execution, to the best of our knowledge, existing kernel testing approaches either naively use each technique separately without handling such challenges or imprecisely handle a part of challenges only by static analysis. To this end, this paper proposes HFL, which not only combines fuzzing with symbolic execution for hybrid fuzzing but also addresses kernel-specific fuzzing challenges via three distinct features: 1) converting indirect control transfers to direct transfers, 2) inferring system call sequence to build a consistent system state, and 3) identifying nested arguments types of system calls. As a result, HFL found 24 previously unknown vulnerabilities in recent Linux kernels. Additionally, HFL achieves 15% and 26% higher code coverage than Moonshine and Syzkaller, respectively, and over kAFL/S2E/TriforceAFL, achieving even four times better coverage, using the same amount of resources (CPU, time, etc.). Regarding vulnerability discovery performance, HFL found 13 known vulnerabilities more than three times faster than Syzkaller.
引用
收藏
页数:17
相关论文
共 50 条
  • [1] Fuzzing the Linux Kernel
    Carabas, Costin
    Carabas, Mihai
    2017 COMPUTING CONFERENCE, 2017, : 839 - 843
  • [2] SYZDIRECT: Directed Greybox Fuzzing for Linux Kernel
    Tan, Xin
    Zhang, Yuan
    Lu, Jiadong
    Xiong, Xin
    Liu, Zhuang
    Yang, Min
    PROCEEDINGS OF THE 2023 ACM SIGSAC CONFERENCE ON COMPUTER AND COMMUNICATIONS SECURITY, CCS 2023, 2023, : 1630 - 1644
  • [3] FastSyzkaller: Improving Fuzz Efficiency for Linux Kernel Fuzzing
    Li, Dan
    Chen, Hua
    2018 INTERNATIONAL SEMINAR ON COMPUTER SCIENCE AND ENGINEERING TECHNOLOGY (SCSET 2018), 2019, 1176
  • [4] Industry Practice of Coverage-Guided Enterprise Linux Kernel Fuzzing
    Shi, Heyuan
    Wang, Runzhe
    Fu, Ying
    Wang, Mingzhe
    Shi, Xiaohai
    Jiao, Xun
    Song, Houbing
    Jiang, Yu
    Sun, Jiaguang
    ESEC/FSE'2019: PROCEEDINGS OF THE 2019 27TH ACM JOINT MEETING ON EUROPEAN SOFTWARE ENGINEERING CONFERENCE AND SYMPOSIUM ON THE FOUNDATIONS OF SOFTWARE ENGINEERING, 2019, : 986 - 995
  • [5] Demystifying the Dependency Challenge in Kernel Fuzzing
    Hao, Yu
    Zhang, Hang
    Li, Guoren
    Du, Xingyun
    Qian, Zhiyun
    Sani, Ardalan Amiri
    2022 ACM/IEEE 44TH INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING (ICSE 2022), 2022, : 659 - 671
  • [6] Linux kernel debugging
    Gereaux, DA
    DR DOBBS JOURNAL, 2005, 30 (11): : 51 - 54
  • [7] Linux kernel release
    不详
    IEEE INTERNET COMPUTING, 2001, 5 (02) : 13 - 13
  • [8] Fuzzing the Latest NTFS in Linux with Papora: An Empirical Study
    Lo, Edward
    He, Ningyu
    Shi, Yuejie
    Xu, Jiajia
    Wu, Chiachih
    Li, Ding
    Guo, Yao
    2023 IEEE SECURITY AND PRIVACY WORKSHOPS, SPW, 2023, : 326 - 336
  • [9] DIFUZE: Interface Aware Fuzzing for Kernel Drivers
    Corina, Jake
    Machiry, Aravind
    Salls, Christopher
    Shoshitaishvili, Yan
    Hao, Shuang
    Kruegel, Christopher
    Vigna, Giovanni
    CCS'17: PROCEEDINGS OF THE 2017 ACM SIGSAC CONFERENCE ON COMPUTER AND COMMUNICATIONS SECURITY, 2017, : 2123 - 2138
  • [10] ACTOR: Action-Guided Kernel Fuzzing
    Fleischer, Marius
    Das, Dipanjan
    Bose, Priyanka
    Bai, Weiheng
    Lu, Kangjie
    Payer, Mathias
    Kruegel, Christopher
    Vigna, Giovanni
    PROCEEDINGS OF THE 32ND USENIX SECURITY SYMPOSIUM, 2023, : 5003 - 5020