中文

堆顶防护:安全堆对象的高效内存错误保护

密码学与安全 2024-08-21 v2

摘要

堆内存错误仍是软件漏洞的主要来源。现有的内存安全防御旨在保护所有对象,导致高性能开销和不完整的保护。相反,我们提出了一种方法,精确识别保护成本低廉的对象,并设计了一种方法对这些对象进行全面保护,使其免受所有类别的内存错误。为此,我们引入了 Uriah 系统,其(1)静态识别访问满足空间安全和类型安全的堆对象,(2)在隔离的安全堆上动态分配此类“安全”堆对象,以在保持空间和类型安全的同时强制一种时间安全形式,称为时间分配类型安全。Uriah 发现,在 SPEC CPU2006/2017 基准测试、5 个服务器程序和 Firefox 中,72.0% 的堆分配点产生的对象其访问始终满足空间和类型安全,这些对象随后通过 Uriah 分配器隔离在安全堆上以强制时间分配类型安全。Uriah 在 SPEC CPU 2006 和 2017 基准测试上仅分别带来 2.9% 和 2.6% 的运行开销,以及 9.3% 和 5.4% 的内存开销,同时防止了对 DARPA CGC 二进制文件和 28 个近期 CVE 中所有堆内存错误的利用。此外,使用现有防御在不安全堆对象上强制其内存安全保证可显著降低开销,从而以更实际的成本保护堆对象免受所有类别的内存错误。

关键词

引用

@article{arxiv.2310.06397,
  title  = {Top of the Heap: Efficient Memory Error Protection of Safe Heap Objects},
  author = {Kaiming Huang and Mathias Payer and Zhiyun Qian and Jack Sampson and Gang Tan and Trent Jaeger},
  journal= {arXiv preprint arXiv:2310.06397},
  year   = {2024}
}