CUP:面向 C/C++ 的全面用户空间保护
密码学与安全
2019-11-27 v1 编程语言
摘要
C/C++ 应用程序中的内存破坏漏洞使攻击者能够执行代码、更改数据和泄露信息。当前的内存清理器无法提供对程序数据的全面覆盖。特别是,现有工具主要关注堆分配,对栈分配和全局变量的支持有限。此外,现有工具侧重于主可执行文件,对系统库的支持有限。 furthermore,它们都存在假阳性和假阴性问题。我们提出了面向 C/C++ 的全面用户空间保护 (CUP),这是一种 LLVM 清理器,可为 64 位架构(原型实现针对 x86_64)上的 C/C++ 程序提供完整的空间安全和概率时间安全。CUP 使用混合元数据方案,支持包括全局变量、堆和栈在内的所有程序数据,并维持 ABI。与使用 NIST Juliet 测试套件的现有方法相比,CUP 将假阴性降低了 10 倍(降至 0.1%),优于最先进的 LLVM 清理器,且不产生假阳性。CUP 对所有用户空间代码(包括 libc 和其他系统库)进行插桩,将它们从可信代码库中移除。
引用
@article{arxiv.1704.05004,
title = {CUP: Comprehensive User-Space Protection for C/C++},
author = {Nathan Burow and Derrick McKee and Scott A. Carr and Mathias Payer},
journal= {arXiv preprint arXiv:1704.05004},
year = {2019}
}