基于堆栈保护的代码复用攻击防御技术

来源 :南京大学 | 被引量 : 0次 | 上传用户:wapp592
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
代码复用攻击中,攻击者篡改程序正常的堆栈并利用软件漏洞劫持控制流。在执行重利用的代码片段之前,攻击者需要将程序的栈指针切换到伪造的调用栈。通过保护程序的堆栈,可以阻止代码复用攻击的必要环节。因此,本文利用影子栈提供后向控制流完整性保护,同时检测并阻止非法栈切换,以防御代码复用攻击。本文主要工作包括:(1)分析影子栈保护方案存在的问题。影子栈保存了每次函数调用时的返回地址,可提供后向控制流完整性(Backward CFI)保护。但现有的影子栈实现方案只适用于单线程,不适用于多线程情形,且需要修改源代码,同时还存在被泄露和篡改的威胁。(2)针对有程序源代码的情况,改进现有影子栈实现方案。通过线程劫持和编译器插装技术避免修改程序源代码并将影子栈技术扩展到多线程情形。利用线程局部存储机制隐藏影子栈,避免其被泄露和篡改。设计实现了原型系统HSS,对该方案的有效性进行了验证,同时测试了性能损耗,开销为5.8%。(3)分析栈切换检测的问题。在实际的ROP攻击中,攻击者会利用栈切换将栈指针指向部署了payload的非栈区域,比如堆区。现有的栈切换检测方法只在和内存操作相关的敏感函数开头插装,检查栈指针是否处于当前线程的合法栈空间,忽略了攻击者将调用敏感函数的payload切换回栈上的可能性,导致可以被绕过。(4)重新设计了栈切换的检查时机,通过在修改栈指针的相关指令后面插装检查动作避免栈切换检查被绕过。在LLVM中实现这一方法,经测试,开销小于1%。
其他文献
泛在网络环境的特征主要表现在越来越多的智能设备出现在网络边缘及用户周围,并通过有线或无线的方式互联,呈现出终端种类多样化,信息传递高带宽化,内容元素多元化,业务提供
当今已进入信息化高速发展的世界,IT技术的发展已经深入到我们生活的方方面面,给我们的生活带来了极大的便利。考试阅卷系统的信息化、智能化是IT技术向教育领域迈进的重要分支
目的 探究普外科护理过程中潜在的护理风险及预防措施.方法 选取2015年1月至2016年1月普外科50例患者作为试验组,将2016年2月至2017年2月普外科50例患者作为对应组,对应组开
[摘 要] 本文将信息化技术融入“数值分析”教学中,通过umu互动学习平台添加一些新颖的课堂小节等,让课堂教学内容更加丰富。让想要学习此门课程的人通过扫描二维码进入,从而实现课堂教学的信息化。  [关键词] UMU互动学习平台;课堂创新;信息化技术  [中图分类号] G642 [文献标志码] A [文章编号] 1008-2549(2018) 12-0110-03  高校课堂教学面临“双一流”建设及