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 条
  • [41] Snow on silk: A NodeOS in the Linux Kernel
    Princeton University, Princeton
    NJ
    08544, United States
    Lect. Notes Comput. Sci., 1600, (1-19):
  • [42] C++ exceptions & the Linux kernel
    Gylfason, HI
    Hjálmtysson, G
    DR DOBBS JOURNAL, 2005, 30 (09): : 50 - 53
  • [43] Analysis of Linux kernel as a complex network
    Gao, Yichao
    Zheng, Zheng
    Qin, Fangyun
    CHAOS SOLITONS & FRACTALS, 2014, 69 : 246 - 252
  • [44] LKIM: The Linux Kernel Integrity Measurer
    Pendergrass, J. Aaron
    McGill, Kathleen N.
    JOHNS HOPKINS APL TECHNICAL DIGEST, 2013, 32 (02): : 509 - 516
  • [45] Address Space Isolation in the Linux Kernel
    Nider, Joel
    Rapoport, Mike
    Bottomley, James
    SYSTOR '19: PROCEEDINGS OF THE 12TH ACM INTERNATIONAL SYSTEMS AND STORAGE CONFERENCE, 2019, : 194 - 194
  • [46] A performance comparison of Linux and a lightweight kernel
    Brightwell, R
    Riesen, R
    Underwood, K
    Hudson, TB
    Bridges, P
    Maccabe, AB
    IEEE INTERNATIONAL CONFERENCE ON CLUSTER COMPUTING, PROCEEDINGS, 2003, : 251 - 258
  • [47] On the Scalability of Linux Kernel Maintainers' Work
    Zhou, Minghui
    Chen, Qingying
    Mockus, Audris
    Wu, Fengguang
    ESEC/FSE 2017: PROCEEDINGS OF THE 2017 11TH JOINT MEETING ON FOUNDATIONS OF SOFTWARE ENGINEERING, 2017, : 27 - 37
  • [48] Asymmetric Software Structures in the Linux Kernel
    Wang, Lei
    Wang, Ping
    Wang, Zhen
    36TH INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING (ICSE COMPANION 2014), 2014, : 620 - 621
  • [49] Analyzing cloning evolution in the Linux kernel
    Antoniol, G
    Villano, U
    Merlo, E
    Di Penta, M
    INFORMATION AND SOFTWARE TECHNOLOGY, 2002, 44 (13) : 755 - 765
  • [50] Static deadlock detection in the Linux kernel
    Breuer, PT
    Valls, MG
    RELIABLE SOFTWARE TECHNOLOGIES- ADA-EUROPE 2004, 2004, 3063 : 52 - 64