Linear-time Temporal Logic guided Greybox Fuzzing

被引:10
|
作者
Meng, Ruijie [1 ]
Dong, Zhen [2 ]
Li, Jialin [1 ]
Beschastnikh, Ivan [3 ]
Roychoudhury, Abhik [1 ]
机构
[1] Natl Univ Singapore, Singapore, Singapore
[2] Fudan Univ, Shanghai, Peoples R China
[3] Univ British Columbia, Vancouver, BC, Canada
关键词
D O I
10.1145/3510003.3510082
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
Software model checking as well as runtime verification are verification techniques which are widely used for checking temporal properties of software systems. Even though they are property verification techniques, their common usage in practice is in "bug finding", that is, finding violations of temporal properties. Motivated by this observation and leveraging the recent progress in fuzzing, we build a greybox fuzzing framework to find violations of Linear-time Temporal Logic (LTL) properties. Our framework takes as input a sequential program written in C/C++, and an LTL property. It finds violations, or counterexample traces, of the LTL property in stateful software systems; however, it does not achieve verification. Our work substantially extends directed greybox fuzzing to witness arbitrarily complex event orderings. We note that existing directed greybox fuzzing approaches are limited to witnessing reaching a location or witnessing simple event orderings like use-after-free. At the same time, compared to model checkers, our approach finds the counterexamples faster, thereby finding more counterexamples within a given time budget. Our LTL-Fuzzer tool, built on top of the AFL fuzzer, is shown to be effective in detecting bugs in well-known protocol implementations, such as OpenSSL and Telnet. We use LTL-Fuzzer to reproduce known vulnerabilities (CVEs), to find 15 zero-day bugs by checking properties extracted from RFCs (for which 12 CVEs have been assigned), and to find violations of both safety as well as liveness properties in real-world protocol implementations. Our work represents a practical advance over software model checkers - while simultaneously representing a conceptual advance over existing greybox fuzzers. Our work thus provides a starting point for understanding the unexplored synergies among software model checking, runtime verification and greybox fuzzing.
引用
收藏
页码:1343 / 1355
页数:13
相关论文
共 50 条
  • [1] Synchronized Linear-Time Temporal Logic
    Wansing, Heinrich
    Kamide, Norihiro
    STUDIA LOGICA, 2011, 99 (1-3) : 365 - 388
  • [2] Synchronized Linear-Time Temporal Logic
    Heinrich Wansing
    Norihiro Kamide
    Studia Logica, 2011, 99
  • [3] A Paraconsistent Linear-time Temporal Logic
    Kamide, Norihiro
    Wansing, Heinrich
    FUNDAMENTA INFORMATICAE, 2011, 106 (01) : 1 - 23
  • [4] A tableau system for linear-TIME temporal logic
    Schmitt, PH
    GoubaultLarrecq, J
    TOOLS AND ALGORITHMS FOR THE CONSTRUCTION AND ANALYSIS OF SYSTEMS, 1997, 1217 : 130 - 144
  • [5] Counting Models of Linear-Time Temporal Logic
    Finkbeiner, Bernd
    Torfah, Hazem
    LANGUAGE AND AUTOMATA THEORY AND APPLICATIONS (LATA 2014), 2014, 8370 : 360 - 371
  • [6] Runtime Verification for Linear-Time Temporal Logic
    Leucker, Martin
    ENGINEERING TRUSTWORTHY SOFTWARE SYSTEMS (SETSS 2016), 2017, 10215 : 151 - 194
  • [7] Compositional verification in linear-time temporal logic
    Tsay, YK
    FOUNDATIONS OF SOFTWARE SCIENCE AND COMPUTATION STRUCTURES, 2000, 1784 : 344 - 358
  • [8] Assumption/guarantee specifications in linear-time temporal logic
    Jonsson, B
    Tsay, YK
    THEORETICAL COMPUTER SCIENCE, 1996, 167 (1-2) : 47 - 72
  • [9] The complexity of counting models of linear-time temporal logic
    Hazem Torfah
    Martin Zimmermann
    Acta Informatica, 2018, 55 : 191 - 212
  • [10] The Complexity of Linear-Time Temporal Logic Model Repair
    Tao, Xiuting
    Li, Guoqiang
    STRUCTURED OBJECT-ORIENTED FORMAL LANGUAGE AND METHOD, SOFL+MSVL 2017, 2018, 10795 : 69 - 87