Securing software by enforcing data-flow integrity

  • Authors:
  • Miguel Castro;Manuel Costa;Tim Harris

  • Affiliations:
  • Microsoft Research;Microsoft Research and University of Cambridge;Microsoft Research

  • Venue:
  • OSDI '06 Proceedings of the 7th symposium on Operating systems design and implementation
  • Year:
  • 2006

Quantified Score

Hi-index 0.00

Visualization

Abstract

Software attacks often subvert the intended data-flow in a vulnerable program. For example, attackers exploit buffer overflows and format string vulnerabilities to write data to unintended locations. We present a simple technique that prevents these attacks by enforcing data-flow integrity. It computes a data-flow graph using static analysis, and it instruments the program to ensure that the flow of data at runtime is allowed by the data-flow graph. We describe an efficient implementation of data-flow integrity enforcement that uses static analysis to reduce instrumentation overhead. This implementation can be used in practice to detect a broad class of attacks and errors because it can be applied automatically to C and C++ programs without modifications, it does not have false positives, and it has low overhead.