SoftBound: Highly Compatible and Complete Spatial Memory Safety for C
Santosh Nagarakatte, Jianzhou Zhao, Milo M K Martin and Steve Zdancewic

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 21% runtime overhead on average.

Published:

"SoftBound: Highly Compatible and Complete Spatial Memory Safety for C"
Santosh Nagarakatte, Jianzhou Zhao, Milo M K Martin and Steve Zdancewic.
Proceedings of the 2009 ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI09) , Dublin, Ireland, June 2009.

Download:

Paper:

BibTeX Entry:

@inproceedings{SoftBound:PLDI09,
 author = {Santosh Nagarakatte and Jianzhou Zhao and Milo M.K. Martin and Steve Zdancewic},
 title = {SoftBound: Highly Compatible and Complete Spatial Safety for C},
 booktitle = {Proceedings of the 2009 ACM SIGPLAN Conference on Programming Language Design and Implementation},
 month = {June},
 year = {2009},
 location = {Dublin, Ireland},
}

Valid CSS! Valid HTML 4.01!