中文

全随机指针

密码学与安全 2025-05-27 v2 编程语言

摘要

对于使用 C 和 C++ 等低级编程语言编写的程序,内存错误仍然是一个关键问题。人们已经提出了许多不同的内存错误防御措施,每种措施在开销、兼容性和攻击抵抗力方面都有不同的权衡。一些防御措施具有高度兼容性,但仅提供最低限度的保护,并且很容易被有知识的攻击者绕过。另一方面,能力系统提供了非常强大(不可伪造)的保护,但需要与现有系统不兼容的新颖软件和硬件实现。挑战在于实现非常强大的保护和高兼容性。在本文中,我们提出了全随机指针(Fully Randomized Pointers, FRP)作为一种强大的内存错误防御措施,同时保持与现有二进制软件的兼容性。FRP 背后的关键思想是设计一种新的指针编码方案,允许对大多数指针位进行完全随机化,使得即使是暴力攻击也变得不切实际。我们设计的 FRP 编码具有以下特点:(1) 与现有二进制代码兼容(无需重新编译);(2) 与底层对象布局解耦。FRP 的原型实现为:(i) 一个软件实现(BlueFat),用于测试安全性和兼容性;(ii) 一个概念验证硬件实现(GreenFat),用于评估性能。我们表明 FRP 在二进制级别是安全、实用且兼容的,而我们的硬件实现实现了低性能开销(< 4%)。

关键词

引用

@article{arxiv.2405.12513,
  title  = {Fully Randomized Pointers},
  author = {Sai Dhawal Phaye and Gregory J. Duck and Roland H. C. Yap and Trevor E. Carlson},
  journal= {arXiv preprint arXiv:2405.12513},
  year   = {2025}
}

备注

15 pages, 3 figures, International Symposium on Memory Management (ISMM) 2025