-
作者GoSSIP @ LoCCS.Shanghai Jiao Tong University
-
简介
Code-Pointer Integrity是一篇发表在OSDI‘14会议上的论文 。文中提出了一种新的防御思想:CPI,保证所有代码指针(函数指针,保存的返回地址)的完整性,可以抵挡ROP等控制流劫持的攻击
摘要
文中提出了一种新的防御思想:CPI,保证所有代码指针(函数指针,保存的返回地址)的完整性。同样可以抵挡ROP等控制流劫持的攻击,并且针对于年初的几篇专门针对CFI的攻击,也能成功防御住。同时文中还提出了一种相对条件更宽松的CPS,更加高效,不过是通过放松了条件限制实现的,能达到类似的防御效果。CPI和CPS防御比CFI更加高效,可实践性更强,作者已经把原型放到网上,并集成到LLVM中作为一个编译选项,还计划将这个防御提交到llvm的upstream上去。
CPI是精确的,对于程序中所有的代码指针都能确保内存的安全性。核心思想是将进程内存划分为安全区域和常规区域。通过静态分析的方法找出程序中所有需要保护的内存对象(所以这是需要在有源码的基础上,在编译时对指针访问进行插桩,尽管不需要对源码进行修改),借此来达成保证所有代码指针的内存安全的目的。
- 安全区:只有编译时证明安全或者运行时经过动态安全监测的内存操作,才能对安全区域进行访问。
- 常规区:无需任何运行时动态检查,只需像未添加保护时那样访问内存即可,故不会带来额外开销。
-
援引http://www.securitygossip.com/blog/2016/03/30/2016-03-30/
-
提示本站仅做资料的整理和索引,转载引用请注明出处
相关推荐
-
2016-04-16 16:33:06
-
2018-09-08 10:21:48
-
2018-12-26 12:34:55
-
2016-09-08 11:36:45