中文

SeMalloc:语义感知的内存分配器

密码学与安全 2024-05-27 v2

摘要

释放后使用(UAF)是内存不安全语言中一个关键且普遍存在的问题。尽管已提出许多解决方案,但在安全性、运行时成本和内存开销之间取得平衡(一个不可能三角)十分困难。在本文中,我们展示了一种平衡该三角的方法,即向分配器传递更多关于堆对象的语义,使其能够做出更明智的分配决策。更具体地说,我们提出了一种新的、对线程、上下文和数据流敏感的“类型”概念——SemaType,以捕获语义,并原型化了一个基于SemaType的分配器,旨在实现该不可能三角中的最佳权衡。在SeMalloc中,只有从相同调用点并通过相同函数调用栈分配的堆对象才可能共享同一个虚拟内存地址,这有效地阻止了类型混淆攻击,并使UAF漏洞更难被利用。通过广泛的实证评估,我们表明SeMalloc是现实的:(a) SeMalloc能有效阻止我们测试的所有真实世界漏洞;(b) 使用SeMalloc的基准程序运行速度甚至比默认堆分配器略快,内存开销平均在41%到84%之间;(c) SeMalloc在平衡安全性和开销方面严格优于其他密切相关的工作。

关键词

引用

@article{arxiv.2402.03373,
  title  = {SeMalloc: Semantics-Informed Memory Allocator},
  author = {Ruizhe Wang and Meng Xu and N. Asokan},
  journal= {arXiv preprint arXiv:2402.03373},
  year   = {2024}
}

备注

Accepted to ACM CCS 2024, camera-ready version under preparation