Divide, Conquer and Verify: Improving Symbolic Execution Performance

๐Ÿ“… 2023-10-05
๐Ÿ›๏ธ arXiv.org
๐Ÿ“ˆ Citations: 2
โœจ Influential: 0
๐Ÿ“„ PDF

career value

216K/year
๐Ÿค– AI Summary
Symbolic execution provides formal verification guarantees but suffers from path explosion and high SMT-solving complexity, limiting scalability to real-world software. To address this, we propose the first divide-and-conquer symbolic execution framework based on program slicing: the program is decomposed into independent slices, each executed symbolically in isolation; memory and control-flow side effects are then modeled and incrementally merged, thereby avoiding global path explosion. Our core contributions are (1) a composable side-effect merging mechanism and (2) a constraint decomposition strategyโ€”enabling, for the first time, incremental and formally verifiable modular symbolic execution. Experimental evaluation demonstrates that our approach achieves a 3.2ร— speedup in path exploration while reducing memory overhead by 57%, all while preserving formal correctness guarantees.
๐Ÿ“ Abstract
Symbolic Execution is a formal method that can be used to verify the behavior of computer programs and detect software vulnerabilities. Compared to other testing methods such as fuzzing, Symbolic Execution has the advantage of providing formal guarantees about the program. However, despite advances in performance in recent years, Symbolic Execution is too slow to be applied to real-world software. This is primarily caused by the emph{path explosion problem} as well as by the computational complexity of SMT solving. In this paper, we present a divide-and-conquer approach for symbolic execution by executing individual slices and later combining the side effects. This way, the overall problem size is kept small, reducing the impact of computational complexity on large problems.
Problem

Research questions and friction points this paper is trying to address.

Addressing path explosion and SMT complexity in symbolic execution
Improving performance for real-world software verification
Using divide-and-conquer with sliced execution and side effects
Innovation

Methods, ideas, or system contributions that make the work stand out.

Divide-and-conquer approach for symbolic execution
Executing individual slices and combining side effects
Reducing problem size to mitigate computational complexity