Abstract
This article presents EXE, an effective bug-finding tool that automatically generates inputs that crash real code. Instead of running code on manually or randomly constructed input, EXE runs it on symbolic input initially allowed to be anything. As checked code runs, EXE tracks the constraints on each symbolic (i.e., input-derived) memory location. If a statement uses a symbolic value, EXE does not run it, but instead adds it as an input-constraint; all other statements run as usual. If code conditionally checks a symbolic expression, EXE forks execution, constraining the expression to be true on the true branch and false on the other. Because EXE reasons about all possible values on a path, it has much more power than a traditional runtime tool: (1) it can force execution down any feasible program path and (2) at dangerous operations (e.g., a pointer dereference), it detects if the current path constraints allow
any
value that causes a bug. When a path terminates or hits a bug, EXE automatically generates a test case by solving the current path constraints to find concrete values using its own co-designed constraint solver, STP. Because EXE’s constraints have no approximations, feeding this concrete input to an uninstrumented version of the checked code will cause it to follow the same path and hit the same bug (assuming deterministic code).
EXE works well on real code, finding bugs along with inputs that trigger them in: the BSD and Linux packet filter implementations, the dhcpd DHCP server, the pcre regular expression library, and three Linux file systems.
Funder
National Science Foundation
Division of Computer and Network Systems
U.S. Department of Homeland Security
Publisher
Association for Computing Machinery (ACM)
Subject
Safety, Risk, Reliability and Quality,General Computer Science
Cited by
261 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Vulnerabilities and Security Patches Detection in OSS: A Survey;ACM Computing Surveys;2024-09-09
2. Path Exploration Strategy for Symbolic Execution based on Multi-strategy Active Learning;Proceedings of the 15th Asia-Pacific Symposium on Internetware;2024-07-24
3. Natural Symbolic Execution-Based Testing for Big Data Analytics;Proceedings of the ACM on Software Engineering;2024-07-12
4. FeatMaker: Automated Feature Engineering for Search Strategy of Symbolic Execution;Proceedings of the ACM on Software Engineering;2024-07-12
5. Rapid Taint Assisted Concolic Execution (TACE);Companion Proceedings of the 32nd ACM International Conference on the Foundations of Software Engineering;2024-07-10