Billions and billions of constraints: Whitebox fuzz testing in production
Authors:
- 1 May 2013
- conference paper
- Published by Institute of Electrical and Electronics Engineers (IEEE)
- No. 02705257,p. 122-131
Abstract
We report experiences with constraint-based whitebox fuzz testing in production across hundreds of large Windows applications and over 500 machine years of computation from 2007 to 2013. Whitebox fuzzing leverages symbolic execution on binary traces and constraint solving to construct new inputs to a program. These inputs execute previously uncovered paths or trigger security vulnerabilities. Whitebox fuzzing has found one-third of all file fuzzing bugs during the development of Windows 7, saving millions of dollars in potential security vulnerabilities. The technique is in use today across multiple products at Microsoft. We describe key challenges with running whitebox fuzzing in production. We give principles for addressing these challenges and describe two new systems built from these principles: SAGAN, which collects data from every fuzzing run for further analysis, and JobCenter, which controls deployment of our whitebox fuzzing infrastructure across commodity virtual machines. Since June 2010, SAGAN has logged over 3.4 billion constraints solved, millions of symbolic executions, and tens of millions of test cases generated. Our work represents the largest scale deployment of whitebox fuzzing to date, including the largest usage ever for a Satisfiability Modulo Theories (SMT) solver. We present specific data analyses that improved our production use of whitebox fuzzing. Finally we report data on the performance of constraint solving and dynamic test generation that points toward future research problems.Keywords
This publication has 13 references indexed in Scilit:
- Higher-order test generation2011
- Parallel symbolic execution for automated real-world software testing2011
- S2E2011
- Statically Validating Must Summaries for Incremental Compositional Dynamic Test Generation2011
- Automatically Identifying Trigger-based Behavior in Malware2007
- Compositional dynamic test generation2007
- Framework for instruction-level tracing and analysis of program executions2006
- DART2005
- The synchronization of periodic routing messagesIEEE/ACM Transactions on Networking, 1994
- An empirical study of the reliability of UNIX utilitiesCommunications of the ACM, 1990