[go: up one dir, main page]
More Web Proxy on the site http://driver.im/ skip to main content
10.1145/3395363.3397360acmconferencesArticle/Chapter ViewAbstractPublication PagesisstaConference Proceedingsconference-collections
research-article

Running symbolic execution forever

Published: 18 July 2020 Publication History

Abstract

When symbolic execution is used to analyse real-world applications, it often consumes all available memory in a relatively short amount of time, sometimes making it impossible to analyse an application for an extended period. In this paper, we present a technique that can record an ongoing symbolic execution analysis to disk and selectively restore paths of interest later, making it possible to run symbolic execution indefinitely. To be successful, our approach addresses several essential research challenges related to detecting divergences on re-execution, storing long-running executions efficiently, changing search heuristics during re-execution, and providing a global view of the stored execution. Our extensive evaluation of 93 Linux applications shows that our approach is practical, enabling these applications to run for days while continuing to explore new execution paths.

References

[1]
Ben Boyter. 2019. Sloc Cloc and Code (scc). https://github.com/boyter/scc
[2]
Dirk Beyer, Thomas A. Henzinger, M. Erkan Keremoglu, and Philipp Wendler. 2012. Conditional Model Checking: A technique to pass information between verifiers. In Proc. of the ACM SIGSOFT Symposium on the Foundations of Software Engineering (FSE'12).
[3]
Stefan Bucur, Vlad Ureche, Cristian Zamfir, and George Candea. 2011. Parallel Symbolic Execution for Automated Real-World Software Testing. In Proc. of the 6th European Conference on Computer Systems (EuroSys'11).
[4]
Cristian Cadar, Daniel Dunbar, and Dawson Engler. 2008. KLEE: Unassisted and Automatic Generation of High-Coverage Tests for Complex Systems Programs. In Proc. of the 8th USENIX Symposium on Operating Systems Design and Implementation (OSDI'08).
[5]
Cristian Cadar and Koushik Sen. 2013. Symbolic Execution for Software Testing: Three Decades Later. Communications of the Association for Computing Machinery (CACM) 56, 2 ( 2013 ), 82-90.
[6]
Rodrigo Castaño, Víctor Braberman, Diego Garbervetsky, and Sebastian Uchitel. 2017. Model Checker Execution Reports. In Proc. of the 32nd IEEE International Conference on Automated Software Engineering (ASE'17).
[7]
Sang Kil Cha, Thanassis Avgerinos, Alexandre Rebert, and David Brumley. 2012. Unleashing Mayhem on Binary Code. In Proc. of the IEEE Symposium on Security and Privacy (IEEE S&P'12).
[8]
Leonardo de Moura and Nikolaj Bjørner. 2008. Z3: An Eficient SMT Solver. In Proc. of the 14th International Conference on Tools and Algorithms for the Construction and Analysis of Systems (TACAS'08).
[9]
GNU. 2019. GNU Binutils. https://www.gnu.org/software/binutils/
[10]
GNU. 2019. GNU Coreutils. https://www.gnu.org/software/coreutils/
[11]
GNU. 2019. GNU Difutils. https://www.gnu.org/software/difutils/
[12]
GNU. 2019. GNU Findutils. https://www.gnu.org/software/findutils/
[13]
GNU. 2019. GNU Grep. https://www.gnu.org/software/grep/
[14]
Patrice Godefroid, Michael Y. Levin, and David A. Molnar. 2008. Automated Whitebox Fuzz Testing. In Proc. of the 15th Network and Distributed System Security Symposium (NDSS'08).
[15]
Xiangyang Jia, Carlo Ghezzi, and Shi Ying. 2015. Enhancing Reuse of Constraint Solutions to Improve Symbolic Execution. In Proc. of the International Symposium on Software Testing and Analysis (ISSTA'15).
[16]
Chris Lattner and Vikram Adve. 2004. LLVM: A Compilation Framework for Lifelong Program Analysis & Transformation. In Proc. of the 2nd International Symposium on Code Generation and Optimization (CGO'04).
[17]
Steven Lauterburg, Ahmed Sobeih, Darko Marinov, and Mahesh Viswanathan. 2008. Incremental State-space Exploration for Programs with Dynamically Allocated Data. In Proc. of the 30th International Conference on Software Engineering (ICSE'08).
[18]
libspng [n.d.]. libspng. https://github.com/randy408/libspng
[19]
Paul Dan Marinescu and Cristian Cadar. 2012. make test-zesti: A Symbolic Execution Solution for Improving Regression Testing. In Proc. of the 34th International Conference on Software Engineering (ICSE'12).
[20]
Lorenzo Martignoni, Stephen McCamant, Pongsin Poosankam, Dawn Song, and Petros Maniatis. 2012. Path-exploration Lifting: Hi-fi Tests for Lo-fi Emulators. In Proc. of the 17th International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS'12).
[21]
Rui Qiu, Sarfraz Khurshid, Corina S. Păsăreanu, Junye Wen, and Guowei Yang. 2018. Using Test Ranges to Improve Symbolic Execution. In Proc. of the 10th International Conference on NASA Formal Methods.
[22]
Rui Qiu, Guowei Yang, Corina S. Păsăreanu, and Sarfraz Khurshid. 2015. Compositional Symbolic Execution with Memoized Replay. In Proc. of the 37th International Conference on Software Engineering (ICSE'15).
[23]
Greg Roelofs and Mark Adler. [n.d.]. zlib. https://zlib.net/
[24]
The tcpdump team. [n.d.]. tcpdump. https://www.tcpdump.org/
[25]
Willem Visser, Jaco Geldenhuys, and Matthew B. Dwyer. 2012. Green: reducing, reusing and recycling constraints in program analysis. In Proc. of the ACM SIGSOFT Symposium on the Foundations of Software Engineering (FSE'12).
[26]
Guowei Yang, Corina S. Păsăreanu, and Sarfraz Khurshid. 2012. Memoized symbolic execution. In Proc. of the International Symposium on Software Testing and Analysis (ISSTA'12).

Cited By

View all
  • (2024)Sparse Symbolic Loop Execution (Registered Report)Proceedings of the 3rd ACM International Fuzzing Workshop10.1145/3678722.3685535(61-69)Online publication date: 13-Sep-2024
  • (2024)Combining Structured Static Code Information and Dynamic Symbolic Traces for Software Vulnerability PredictionProceedings of the IEEE/ACM 46th International Conference on Software Engineering10.1145/3597503.3639212(1-13)Online publication date: 20-May-2024
  • (2024)Refining CEGAR-Based Test-Case Generation with Feasibility AnnotationsTests and Proofs10.1007/978-3-031-72044-4_3(45-64)Online publication date: 9-Sep-2024
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
ISSTA 2020: Proceedings of the 29th ACM SIGSOFT International Symposium on Software Testing and Analysis
July 2020
591 pages
ISBN:9781450380089
DOI:10.1145/3395363
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than the author(s) must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected].

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 18 July 2020

Permissions

Request permissions for this article.

Check for updates

Badges

Author Tags

  1. KLEE
  2. memoization
  3. symbolic execution

Qualifiers

  • Research-article

Funding Sources

Conference

ISSTA '20
Sponsor:

Acceptance Rates

Overall Acceptance Rate 58 of 213 submissions, 27%

Upcoming Conference

ISSTA '25

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)79
  • Downloads (Last 6 weeks)10
Reflects downloads up to 11 Dec 2024

Other Metrics

Citations

Cited By

View all
  • (2024)Sparse Symbolic Loop Execution (Registered Report)Proceedings of the 3rd ACM International Fuzzing Workshop10.1145/3678722.3685535(61-69)Online publication date: 13-Sep-2024
  • (2024)Combining Structured Static Code Information and Dynamic Symbolic Traces for Software Vulnerability PredictionProceedings of the IEEE/ACM 46th International Conference on Software Engineering10.1145/3597503.3639212(1-13)Online publication date: 20-May-2024
  • (2024)Refining CEGAR-Based Test-Case Generation with Feasibility AnnotationsTests and Proofs10.1007/978-3-031-72044-4_3(45-64)Online publication date: 9-Sep-2024
  • (2023)Enhancing DNN-Based Binary Code Function Search With Low-Cost Equivalence CheckingIEEE Transactions on Software Engineering10.1109/TSE.2022.314924049:1(226-250)Online publication date: 1-Jan-2023
  • (2023)Enhancing Safety Checking Coverage with Multi-swarm Particle Swarm OptimizationAdvances in Practical Applications of Agents, Multi-Agent Systems, and Cognitive Mimetics. The PAAMS Collection10.1007/978-3-031-37616-0_12(137-148)Online publication date: 12-Jul-2023
  • (2022)FastKLEE: faster symbolic execution via reducing redundant bound checking of type-safe pointersProceedings of the 30th ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering10.1145/3540250.3558919(1741-1745)Online publication date: 7-Nov-2022
  • (2022)Feedback-Driven Incremental Symbolic Execution2022 IEEE 33rd International Symposium on Software Reliability Engineering (ISSRE)10.1109/ISSRE55969.2022.00055(505-516)Online publication date: Oct-2022
  • (2022)Lightweight, Multi-Stage, Compiler-Assisted Application Specialization2022 IEEE 7th European Symposium on Security and Privacy (EuroS&P)10.1109/EuroSP53844.2022.00024(251-269)Online publication date: Jun-2022
  • (2022)DExIE - An IoT-Class Hardware Monitor for Real-Time Fine-Grained Control-Flow IntegrityJournal of Signal Processing Systems10.1007/s11265-021-01732-594:7(739-752)Online publication date: 6-Jan-2022
  • (2021)Learning to Explore Paths for Symbolic ExecutionProceedings of the 2021 ACM SIGSAC Conference on Computer and Communications Security10.1145/3460120.3484813(2526-2540)Online publication date: 12-Nov-2021
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media