Badger: Complexity Analysis with Fuzzing and Symbolic Execution
Hybrid testing approaches that involve fuzz testing and symbolic execution have shown promising results in achieving high code coverage, uncovering subtle errors and vulnerabilities in a variety of software applications. In this paper we describe Badger - a new hybrid approach for complexity analysis, with the goal of discovering vulnerabilities which occur when the worst-case time or space complexity of an application is significantly higher than the average case. Badger uses fuzz testing to generate a diverse set of inputs that aim to increase not only coverage but also a resource-related cost associated with each path. Since fuzzing may fail to execute deep program paths due to its limited knowledge about the conditions that influence these paths, we complement the analysis with a symbolic execution, which is also customized to search for paths that increase the resource-related cost. Symbolic execution is particularly good at generating inputs that satisfy various program conditions but by itself suffers from path explosion. Therefore, Badger uses fuzzing and symbolic execution in tandem, to leverage their benefits and overcome their weaknesses. We implemented our approach for the analysis of Java programs, based on Kelinci and Symbolic PathFinder. We evaluated Badger on Java applications, showing that our approach is significantly faster in generating worst-case executions compared to fuzzing or symbolic execution on their own.
Wed 18 JulDisplayed time zone: Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna change
14:00 - 15:30 | Optimization and PerformanceISSTA Technical Papers at Zurich II Chair(s): Tevfik Bultan University of California, Santa Barbara | ||
14:00 20mTalk | Remove RATs from Your Code: Automated Optimization of Resource Inefficient Database Writes for Mobile Applications ISSTA Technical Papers Yingjun Lyu University of Southern California, Ding Li NEC Labs, William G.J. Halfond University of Southern California | ||
14:20 20mTalk | Badger: Complexity Analysis with Fuzzing and Symbolic Execution ISSTA Technical Papers Yannic Noller Humboldt-Universität zu Berlin, Rody Kersten Synopsys, Inc., Corina S. Păsăreanu NASA Ames Research Center | ||
14:40 20mTalk | Exploiting Community Structure for Floating-Point Precision Tuning ISSTA Technical Papers | ||
15:00 20mTalk | piCoq: Parallel Regression Proving for Large-Scale Verification Projects ISSTA Technical Papers Karl Palmskog University of Texas at Austin, Ahmet Celik University of Texas at Austin, USA, Milos Gligoric University of Texas at Austin | ||
15:20 10m | Q&A in groups ISSTA Technical Papers |