SoftBound: Highly compatible and complete spatial memory safety for C

Santosh Nagarakatte, Jianzhou Zhao, Milo M.K. Martin, Steve Zdancewic

Research output: Chapter in Book/Report/Conference proceedingConference contribution

197 Scopus citations

Abstract

The serious bugs and security vulnerabilities facilitated by C/C++'s lack of bounds checking are well known, yet C and C++ remain in widespread use. Unfortunately, C's arbitrary pointer arithmetic, conflation of pointers and arrays, and programmer-visible memory layout make retrofitting C/C++ with spatial safety guarantees extremely challenging. Existing approaches suffer from incompleteness, have high runtime overhead, or require non-trivial changes to the C source code. Thus far, these deficiencies have prevented widespread adoption of such techniques. This paper proposes SoftBound, a compile-time transformation for enforcing spatial safety of C. Inspired by HardBound, a previously proposed hardware-assisted approach, SoftBound similarly records base and bound information for every pointer as disjoint metadata. This decoupling enables SoftBound to provide spatial safety without requiring changes to C source code. Unlike HardBound, SoftBound is a software-only approach and performs metadata manipulation only when loading or storing pointer values. A formal proof shows that this is sufficient to provide spatial safety even in the presence of arbitrary casts. SoftBound's full checking mode provides complete spatial violation detection with 67% runtime overhead on average. To further reduce overheads, SoftBound has a store-only checking mode that successfully detects all the security vulnerabilities in a test suite at the cost of only 22% runtime overhead on average.

Original languageEnglish (US)
Title of host publicationPLDI'09 - Proceedings of the 2009 ACM SIGPLAN Conference on Programming Language Design and Implementation
Pages245-258
Number of pages14
DOIs
StatePublished - 2009
Externally publishedYes
Event2009 ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI'09 - Dublin, Ireland
Duration: Jun 15 2009Jun 20 2009

Publication series

NameProceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI)

Other

Other2009 ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI'09
Country/TerritoryIreland
CityDublin
Period6/15/096/20/09

All Science Journal Classification (ASJC) codes

  • Software

Keywords

  • Buffer overflows
  • C
  • Spatial memory safety

Fingerprint

Dive into the research topics of 'SoftBound: Highly compatible and complete spatial memory safety for C'. Together they form a unique fingerprint.

Cite this