• Documents
  • Authors
  • Tables
  • Other Seers ▼
    RefSeer AckSeer CollabSeer SeerSeer
  • Log in
  • Sign up
  • MetaCart

CiteSeerX logo

Advanced Search Include Citations
Advanced Search Include Citations | Disambiguate

Automated Whitebox Fuzz Testing

Cached

  • Download as a PDF

Download Links

  • [www.cs.ucla.edu]
  • [research.microsoft.com]
  • [research.microsoft.com]
  • [research.microsoft.com]
  • [research.microsoft.com]
  • [www.isoc.org]

  • Save to List
  • Add to Collection
  • Correct Errors
  • Monitor Changes
by Patrice Godefroid , Michael Y. Levin , David Molnar
Citations:102 - 12 self
  • Summary
  • Active Bibliography
  • Co-citation
  • Clustered Documents
  • Version History

BibTeX

@MISC{Godefroid_automatedwhitebox,
    author = {Patrice Godefroid and Michael Y. Levin and David Molnar},
    title = { Automated Whitebox Fuzz Testing},
    year = {}
}

Years of Citing Articles

Bookmark

citeulike Connotea Bibsonomy Del.icio.us Digg Reddit

OpenURL

 

Abstract

Fuzz testing is an effective technique for finding security vulnerabilities in software. Traditionally, fuzz testing tools apply random mutations to well-formed inputs of a program and test the resulting values. We present an alternative whitebox fuzz testing approach inspired by recent advances in symbolic execution and dynamic test generation. Our approach records an actual run of the program under test on a well-formed input, symbolically evaluates the recorded trace, and gathers constraints on inputs capturing how the program uses these. The collected constraints are then negated one by one and solved with a constraint solver, producing new inputs that exercise different control paths in the program. This process is repeated with the help of a code-coverage maximizing heuristic designed to find defects as fast as possible. We have implemented this algorithm in SAGE (Scalable, Automated, Guided Execution), a new tool employing x86 instruction-level tracing and emulation for whitebox fuzzing of arbitrary file-reading Windows applications. We describe key optimizations needed to make dynamic test generation scale to large input files and long execution traces with hundreds of millions of instructions. We then present detailed experiments with several Windows applications. Notably, without any format-specific knowledge, SAGE detects the MS07-017 ANI vulnerability, which was missed by extensive blackbox fuzzing and static analysis tools. Furthermore, while still in an early stage of development, SAGE has already discovered 30+ new bugs in large shipped Windows applications including image processors, media players, and file decoders. Several of these bugs are potentially exploitable memory access violations.

Citations

359 Symbolic execution and program testing - King - 1976
355 DART: directed automated random testing - GODEFROID, KLARLUND, et al. - 2005
212 Cute: a concolic unit testing engine for c - Sen, Marinov, et al. - 2005
211 Valgrind: A framework for heavyweight dynamic binary instrumentation - Nethercote, Seward - 2007
206 Vigilante: end-to-end containment of internet worms - Costa, Crowcroft, et al. - 2005
154 EXE: Automatically Generating Inputs of Death - Cadar, Ganesh, et al. - 2006
90 Analyzing Memory Accesses in x86 Executables - Balakrishnan, Reps
83 Compositional dynamic test generation - GODEFROID
77 Automatic generation of random self-checking test cases - Bird, Munoz - 1983
72 An Empirical Study of the Robustness of Windows NT Applications Using Random Testing - Forrester, Miller, et al. - 2000
70 Execution generated test cases: How to make systems code crash itself - Cadar, Engler - 2005
68 S.K.: SYNERGY: A new algorithm for property checking - Gulavani, Henzinger, et al.
58 A semantic model of program faults - Offutt, Hayes - 1996
56 Hybrid concolic testing - Majumdar, Sen - 2007
55 Framework for instruction-level tracing and analysis of programs. InVEE - Bhansali, Chen, et al. - 2006
55 Static and dynamic analysis: Synergy and duality - Ernst - 2003
48 M.L.: Generating test data for branch coverage - Gupta, Mathur, et al. - 2000
36 A dynamic approach of test data generation - Korel - 1990
34 Automatically classifying benign and harmful data racesallusing replay analysis - Narayanasamy, Wang, et al. - 2007
14 The Advantages of Block-Based Protocol Analysis for Security Testing - Aitel
14 Software model checking: Searching for computations in the abstract or the concrete - Godefroid, Klarlund - 2005
12 Static detection of vulnerabilities in x86 executables - COVA, FELMETSGER, et al. - 2006
11 Disolver : A Distributed Constraint Solver - Hamadi
9 Catchconv: Symbolic execution and run-time type inference for integer conversion errors - Molnar, Wagner - 2007
8 Automatically protecting against integer-based vulnerabilities - RICH - 2007
7 Flayer: Exposing application internals - DREWRY, ORMANDY - 2007
7 Autodafé: an act of software torture - Vuagnoux
4 Lessons learned from the animated cursor security bug - Howard - 2007
2 Windows animated cursor stack overflow vulnerability - Sotirov - 2007
The National Science Foundation
  • About CiteSeerX
  • Submit Documents
  • Privacy Policy
  • Help
  • Data
  • Source
  • Contact Us

Developed at and hosted by The College of Information Sciences and Technology

© 2007-2010 The Pennsylvania State University