C语言中低成本内存安全性的内联和辅助方法

2021-02-17 22:10:38

本技术报告基于作者于2020年11月提交给Selwyn College剑桥大学的哲学博士学位的论文。

系统语言(例如C或C ++)因其高性能而被广泛使用,但是允许使用任意指针算术和类型转换会带来内存损坏的风险。这些内存错误会导致程序意外终止,甚至更糟的是,攻击者可以利用它们来更改程序的行为或泄漏关键数据。

尽管内存安全解决方案有所进步,但高昂且不可预测的开销仍然是主要挑战。接受者很难获得具有适用于生产部署的性能级别的完全内存安全性,因此研究人员试图在性能,检测范围,互操作性,精度和检测时间之间取得平衡。一些特性是非常理想的,例如在性能上牺牲了相对较少的关键属性,例如,通过执行近似或概率检查或仅检测某些错误,可以忍受更长的检测延迟或缩小检测覆盖范围。现代解决方案争夺性能。

内存安全解决方案的性能矩阵具有两个主要评估标准–运行时和内存开销。研究人员根据其目的或位置来权衡和衡量绩效指标。它们中的许多可以忍受内存使用量的增加,以实现更快的速度,因为在开发过程中,内存安全不是主要问题,因此更需要进行故障排除或测试,从而更希望进行内存安全性实施。高速缓存未命中,动态指令,DRAM行激活,分支预测和其他因素会影响运行时间开销(被认为更为关键)。

这项研究提出,实施和评估了MIU:Memory IntegrityUtilities包含三个解决方案– MemPatrol,FRAMER和spaceMiu。MIU提出了通过利用自由资源来实际部署内存安全性的新技术,重点是:(1)在开销<使用并发和权衡即时检测和覆盖率的1%;但仍通过监视隔离设计对寄存器中的监视进程进行最终检测,并使用AES指令(2)通过使用新的标记指针表示,通过消除硬件支持无法解决的开销(接近零)来实现几乎零的假负值,从而实现了完整的内存安全性。利用指针的指针位。

@TechReport {UCAM-CL-TR-954,作者= {Nam,Myoung Jin},标题= {{用于C语言中低成本内存安全的行内和边际方法}},年份= 2021,月份= 2月,网址= { https://www.cl.cam.ac.uk/techreports/UCAM-CL-TR-954.pdf},机构= {剑桥大学计算机实验室},编号= {UCAM-CL-TR-954}}