中文

饱和内存访问:在不终止程序的情况下缓解内存空间错误

密码学与安全 2020-04-07 v2

摘要

内存空间错误,即缓冲区溢出漏洞,长期以来一直是计算机安全中的已知问题,并且仍是可利用漏洞的根本原因之一。大多数现有的缓解工具采用失效停止策略来保护程序免受入侵,这意味着受害程序在检测到内存安全违规时将被终止。不幸的是,失效停止策略损害了软件的可用性。在本文中,我们提出饱和内存访问(SMA),一种在不终止程序的情况下防止越界访问的内存空间错误缓解机制。SMA 基于一个关键观察:开发者通常不依赖越界访问来实现程序逻辑。SMA 修改动态内存分配器并为对象添加填充以形成扩大的对象边界。通过动态纠正所有越界访问以在扩大的保护边界上操作,SMA 可以容忍越界访问。为了兼容性,我们选择标记指针在指针本身中记录内存对象的边界元数据,并在检测到越界访问时纠正地址。我们已在 LLVM 10.0 上实现了 SMA 的原型。我们的结果显示我们的编译器使程序能够成功执行通过缓冲区溢出攻击。在 MiBench 上的实验表明我们的原型带来了 78% 的开销。进一步的优化将需要 ISA 支持。

关键词

引用

@article{arxiv.2002.02831,
  title  = {Saturation Memory Access: Mitigating Memory Spatial Errors without Terminating Programs},
  author = {Dongwei Chen and Daliang Xu and Dong Tong and Kang Sun and Xuetao Guan and Chun Yang and Xu Cheng},
  journal= {arXiv preprint arXiv:2002.02831},
  year   = {2020}
}