Loop-Extended Symbolic Execution on Binary Programs

Abstract

Mixed concrete and symbolic execution is an important technique for finding and understanding software bugs, including security-relevant ones. However, existing symbolic execution techniques are limited to examining one execution path at a time, in which symbolic variables reflect only direct data dependencies. We introduce loop-extended symbolic execution, a generalization that broadens the coverage of symbolic results in programs with loops. It introduces symbolic variables for the number of times each loop executes and links these with features of a known input grammar such as variable-length or repeating fields. This allows the symbolic constraints to cover a class of paths that includes different numbers of loop iterations, expressing loop-dependent program values in terms of properties of the input. By performing more reasoning symbolically, instead of by undirected exploration, applications of loop-extended symbolic execution can achieve better results and/or require fewer program executions. To demonstrate our technique we apply it to the problem of discovering and diagnosing buffer-overflow vulnerabilities in software given only in binary form. Our tool finds vulnerabilities in both a standard benchmark suite and 3 real-world applications, after generating only a handful of candidate inputs, and also diagnoses general vulnerability conditions.

Open PDF

Document Details

Document Type
Technical Report
Publication Date
Mar 02, 2009
Accession Number
ADA538843

Entities

People

  • Dawn Song
  • Pongsin Poosankam
  • Prateek Saxena
  • Stephen Mccamant

Organizations

  • University of California, Berkeley

Tags

Communities of Interest

  • Energy and Power Technologies

DTIC Thesaurus Topics

  • Air Force
  • Algorithms
  • Case Studies
  • Computer Programming
  • Computer Programs
  • Computer Science
  • Computers
  • Concrete
  • Grammars
  • Iterations
  • Language
  • Materials
  • Operating Systems
  • Scientific Research
  • Software Development
  • Standards
  • Vulnerability

Fields of Study

  • Computer science
  • Engineering

Readers

  • Computer Science.
  • Distributed Systems and Data Platform Development
  • Linear Algebra