SEVE: Symbolic Execution based Vulnerability Exploring system
Purpose - Software vulnerabilities have been the greatest threat to the software industry for a long time. Many detection techniques have been developed to address this kind of issue, such as Fuzzing, but mere Fuzz Testing is not good enough, because the Fuzzing only alters the input of program randomly, and does not consider the basic semantics of the target software. The purpose of this paper is to introduce a new vulnerability exploring system, called "SEVE" to explore the target software more deeply and to generate more test cases with more accuracy. Design/methodology/approach - Symbolic execution is the core technique of SEVE. The user can just input a standard input, and the SEVE system will record the execution path, alter the critical branches of it, and generate a totally different test case which will make the software under test execute a different path. In this way, some potential bugs or defects, even the exploitable vulnerabilities will be discovered. To alleviate path explosion, the authors propose heuristic method and function abstraction, which in turn improve the performance of SEVE even further. Findings - We evaluate SEVE system to record critical data about its efficiency and performance. We have tested some real-world vulnerabilities, from which the underlying file-input programs suffer. After that, the results show that SEVE is not only re-creating the discovery of these vulnerabilities, but also at a higher performance level than traditional techniques. Originality/value - The paper proposes a new vulnerability exploring system, called "SEVE" to explore the target software and generate test cases automatically and also heuristic method and function abstraction to handle path explosion.
symbolic execution computer software programming and algorithm theory vulnerability discovery dynamic binary instrumentation smt solver