论文标题

饱和内存访问:减轻内存空间错误而不终止程序

Saturation Memory Access: Mitigating Memory Spatial Errors without Terminating Programs

论文作者

Chen, Dongwei, Xu, Daliang, Tong, Dong, Sun, Kang, Guan, Xuetao, Yang, Chun, Cheng, Xu

论文摘要

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

Memory spatial errors, i.e., buffer overflow vulnerabilities, have been a well-known issue in computer security for a long time and remain one of the root causes of exploitable vulnerabilities. Most of the existing mitigation tools adopt a fail-stop strategy to protect programs from intrusions, which means the victim program will be terminated upon detecting a memory safety violation. Unfortunately, the fail-stop strategy harms the availability of software. In this paper, we propose Saturation Memory Access (SMA), a memory spatial error mitigation mechanism that prevents out-of-bounds access without terminating a program. SMA is based on a key observation that developers generally do not rely on out-of-bounds accesses to implement program logic. SMA modifies dynamic memory allocators and adds paddings to objects to form an enlarged object boundary. By dynamically correcting all the out-of-bounds accesses to operate on the enlarged protecting boundaries, SMA can tolerate out-of-bounds accesses. For the sake of compatibility, we chose tagged pointers to record the boundary metadata of a memory object in the pointer itself, and correct the address upon detecting out-of-bounds access. We have implemented the prototype of SMA on LLVM 10.0. Our results show that our compiler enables the programs to execute successfully through buffer overflow attacks. Experiments on MiBench show that our prototype incurs an overhead of 78\%. Further optimizations would require ISA supports.

扫码加入交流群

加入微信交流群

微信交流群二维码

扫码加入学术交流群,获取更多资源