Skip to main navigation Skip to search Skip to main content

SafeInit: Comprehensive and Practical Mitigation of Uninitialized Read Vulnerabilities

Research output: Contribution to ConferencePaperAcademic

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 be-havior 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.
Original languageEnglish
DOIs
Publication statusPublished - 27 Feb 2017

Funding

We would like to thank Kees Cook, Kangjie Lu and the anonymous reviewers for their comments. This work was supported by the European Commission through project H2020 ICT-32-2014 SHARCS under Grant Agreement No. 644571 and by the Netherlands Organisation for Scientific Research through grant NWO 639.023.309 VICI Dowsing.

FundersFunder number
NWO639.023.309
European CommissionH2020 ICT-32-2014
Horizon 2020 Framework Programme644571

    Fingerprint

    Dive into the research topics of 'SafeInit: Comprehensive and Practical Mitigation of Uninitialized Read Vulnerabilities'. Together they form a unique fingerprint.

    Cite this