SafeInit: Comprehensive and Practical Mitigation of Uninitialized Read Vulnerabilities

25Citations
Citations of this article
67Readers
Mendeley users who have this article in their library.
Get full text

Abstract

Usage of uninitialized values remains a common error in C/C++ code. This results not only in undefined and generally undesired behavior, but is also a cause of information disclosure and other security vulnerabilities. Existing solutions for mitigating such errors are not used in practice as they are either limited in scope (for example, only protecting the heap), or incur high runtime overhead. In this paper, we propose SafeInit, a practical protection system which hardens applications against such undefined behavior by guaranteeing initialization of all values on the heap and stack, every time they are allocated or come into scope. Doing so provides comprehensive protection against this class of vulnerabilities in generic programs, including both information disclosure and re-use/logic vulnerabilities. We show that, with carefully designed compiler optimizations, our implementation achieves sufficiently low overhead (<5% for typical server applications and SPEC CPU2006) to serve as a standard hardening protection in practical settings. Moreover, we show that we can effortlessly apply it to harden non-standard code, such as the Linux kernel, with low runtime overhead.

Cite

CITATION STYLE

APA

Milburn, A., Bos, H., & Giuffrida, C. (2017). SafeInit: Comprehensive and Practical Mitigation of Uninitialized Read Vulnerabilities. In 24th Annual Network and Distributed System Security Symposium, NDSS 2017. The Internet Society. https://doi.org/10.14722/ndss.2017.23183

Register to see more suggestions

Mendeley helps you to discover research relevant for your work.

Already have an account?

Save time finding and organizing research with Mendeley

Sign up for free