Verifying Systems Rules Using Rule-Directed Symbolic Execution

被引:35
|
作者
Cui, Heming [1 ]
Hu, Gang [1 ]
Wu, Jingyue [1 ]
Yang, Junfeng [1 ]
机构
[1] Columbia Univ, New York, NY 10027 USA
关键词
Algorithms; Experimentation; Reliability; Verification; Symbolic execution; Path Slicing; Error Detection; Systems Rules;
D O I
10.1145/2499368.2451152
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
Systems code must obey many rules, such as "opened files must be closed." One approach to verifying rules is static analysis, but this technique cannot infer precise runtime effects of code, often emitting many false positives. An alternative is symbolic execution, a technique that verifies program paths over all inputs up to a bounded size. However, when applied to verify rules, existing symbolic execution systems often blindly explore many redundant program paths while missing relevant ones that may contain bugs. Our key insight is that only a small portion of paths are relevant to rules, and the rest (majority) of paths are irrelevant and do not need to be verified. Based on this insight, we create WOODPECKER, a new symbolic execution system for effectively checking rules on systems programs. It provides a set of builtin checkers for common rules, and an interface for users to easily check new rules. It directs symbolic execution toward the program paths relevant to a checked rule, and soundly prunes redundant paths, exponentially speeding up symbolic execution. It is designed to be heuristic-agnostic, enabling users to leverage existing powerful search heuristics. Evaluation on 136 systems programs totaling 545K lines of code, including some of the most widely used programs, shows that, with a time limit of typically just one hour for each verification run, WOODPECKER effectively verifies 28.7% of the program and rule combinations over bounded input, whereas an existing symbolic execution system KLEE verifies only 8.5%. For the remaining combinations, WOODPECKER verifies 4.6 times as many relevant paths as KLEE. With a longer time limit, WOODPECKER verifies much more paths than KLEE, e. g., 17 times as many with a four-hour limit. WOODPECKER detects 113 rule violations, including 10 serious data loss errors with 2 most serious ones already confirmed by the corresponding developers.
引用
收藏
页码:329 / 341
页数:13
相关论文
共 50 条
  • [1] Unit Test Data Generation for C Using Rule-Directed Symbolic Execution
    Zhang, Ming-Zhe
    Gong, Yun-Zhan
    Wang, Ya-Wen
    Jin, Da-Hai
    [J]. JOURNAL OF COMPUTER SCIENCE AND TECHNOLOGY, 2019, 34 (03) : 670 - 689
  • [2] Unit Test Data Generation for C Using Rule-Directed Symbolic Execution
    Ming-Zhe Zhang
    Yun-Zhan Gong
    Ya-Wen Wang
    Da-Hai Jin
    [J]. Journal of Computer Science and Technology, 2019, 34 : 670 - 689
  • [3] Verifying concurrent systems with symbolic execution
    Balser, Michael
    Duelli, Christoph
    Reif, Wolfgang
    Schellhorn, Gerhard
    [J]. Journal of Logic and Computation, 2002, 12 (04) : 549 - 560
  • [4] Rule-Directed Code Clone Synchronization
    Cheng, Xiao
    Zhong, Hao
    Chen, Yuting
    Hu, Zhenjiang
    Zhao, Jianjun
    [J]. 2016 IEEE 24TH INTERNATIONAL CONFERENCE ON PROGRAM COMPREHENSION (ICPC), 2016,
  • [5] Directed Symbolic Execution
    Kin-Keung Ma
    Khoo Yit Phang
    Foster, Jeffrey S.
    Hicks, Michael
    [J]. STATIC ANALYSIS, 2011, 6887 : 95 - 111
  • [6] Verifying Information Flow Properties of Firmware using Symbolic Execution
    Subramanyan, Pramod
    Malik, Sharad
    Khattri, Hareesh
    Maiti, Abhranil
    Fung, Jason
    [J]. PROCEEDINGS OF THE 2016 DESIGN, AUTOMATION & TEST IN EUROPE CONFERENCE & EXHIBITION (DATE), 2016, : 337 - 342
  • [7] Rule-directed and discovery learning in SCUBA-diving
    Moeller, Fabian
    Hoffmann, Uwe
    Steinberg, Fabian
    Vogt, Tobias
    [J]. INTERNATIONAL JOURNAL OF SPORTS SCIENCE & COACHING, 2023, 18 (03) : 737 - 747
  • [8] Directed Incremental Symbolic Execution
    Person, Suzette
    Yang, Guowei
    Rungta, Neha
    Khurshid, Sarfraz
    [J]. ACM SIGPLAN NOTICES, 2011, 46 (06) : 504 - 515
  • [9] Directed Incremental Symbolic Execution
    Person, Suzette
    Yang, Guowei
    Rungta, Neha
    Khurshid, Sarfraz
    [J]. PLDI 11: PROCEEDINGS OF THE 2011 ACM CONFERENCE ON PROGRAMMING LANGUAGE DESIGN AND IMPLEMENTATION, 2011, : 504 - 515
  • [10] Directed Incremental Symbolic Execution
    Yang, Guowei
    Person, Suzette
    Rungta, Neha
    Khurshid, Sarfraz
    [J]. ACM TRANSACTIONS ON SOFTWARE ENGINEERING AND METHODOLOGY, 2014, 24 (01)