Type-after-type: Practical and complete type-safe memory reuse

Erik Van Der Kouwe, Taddeus Kroes, Chris Ouwehand, Herbert Bos, Cristiano Giuffrida

Research output: Chapter in Book / Report / Conference proceedingConference contributionAcademicpeer-review

409 Downloads (Pure)

Abstract

Temporal memory errors, such as use-after-free bugs, are increasingly popular among attackers and their exploitation is hard to stop efficiently using current techniques. We present a new design, called Type-After-Type, which builds on abstractions in production allocators to provide complete temporal type safety for C/C++ programs-ensuring that memory reuse is always type safe-and efficiently hinder temporal memory attacks. Type-After-Type uses static analysis to determine the types of all heap and stack allocations, and replaces regular allocations with typed allocations that never reuse memory previously used by other types. On the heap, Type-After-Type splits available memory into separate pools for each type. For the stack, Type-After-Type efficiently implements type-safe memory reuse for the first time, pushing variables on separate stacks according to their types, unless they are provably safe (e.g., their address is not taken), in which case they are zero-initialized and kept on a special stack. In our evaluation, we show that Type-After-Type stops a variety of real-world temporal memory attacks and on SPEC CPU2006 incurs a performance overhead of 4.3% and a memory overhead of 17.4% (geomean).

Original languageEnglish
Title of host publicationACSAC '18
Subtitle of host publicationProceedings of the 34th Annual Computer Security Applications Conference
PublisherAssociation for Computing Machinery
Pages17-27
Number of pages11
ISBN (Electronic)9781450365697
DOIs
Publication statusPublished - 2018
Event34th Annual Computer Security Applications Conference, ACSAC 2018 - San Juan, United States
Duration: 3 Dec 20187 Dec 2018

Conference

Conference34th Annual Computer Security Applications Conference, ACSAC 2018
Country/TerritoryUnited States
CitySan Juan
Period3/12/187/12/18

Funding

We would like to thank the anonymous reviewers for their comments. This project was supported by the European Union's Horizon 2020 research and innovation programme under grant agreement No. 786669 (ReAct), by the United States Office of Naval Research (ONR) under contract N00014-17-1-2782, by Cisco Systems, Inc. through grant #1138109, and by the Netherlands Organisation for Scientific Research through grants NWO 639.023.309 VICI “Dowsing” and NWO 639.021.753 VENI “PantaRhei”. This paper reflects only the authors' view. The funding agencies are not responsible for any use that may be made of the information it contains.

FundersFunder number
Cisco Systems1138109
Horizon 2020 Framework Programme786669
European Geosciences UnionN00014-17-1-2782
Nederlandse Organisatie voor Wetenschappelijk OnderzoekNWO 639.023.309, NWO 639.021.753

    Keywords

    • Computer systems
    • Defense
    • LLVM
    • Uninitialized read
    • Use-after-free

    Fingerprint

    Dive into the research topics of 'Type-after-type: Practical and complete type-safe memory reuse'. Together they form a unique fingerprint.

    Cite this