[发明专利]一种抵御代码重用攻击的方法有效
申请号: | 201510501698.X | 申请日: | 2015-08-14 |
公开(公告)号: | CN105022956B | 公开(公告)日: | 2018-11-09 |
发明(设计)人: | 王喆;武成岗;王振江;李建军 | 申请(专利权)人: | 中国科学院计算技术研究所 |
主分类号: | G06F21/54 | 分类号: | G06F21/54 |
代理公司: | 北京泛华伟业知识产权代理有限公司 11280 | 代理人: | 王勇 |
地址: | 100190 北*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 抵御 代码 重用 攻击 方法 | ||
本发明提供一种抵御代码重用攻击的方法,其特征在于,包括下列步骤:1)在工作进程运行过程中,洗牌进程生成工作进程的新版本代码并将其存入代码缓存区,所述代码缓存区被工作进程和洗牌进程所共享;2)所述工作进程完成新旧版本代码的切换。本发明具有下列技术效果:本发明实现了应用级的持续随机化,能够有效地防御代码重用攻击。本发明的防御代码重用攻击方法不需要修改操作系统内核,不需要修改现有的CPU硬件,并且不需要源代码的支持,兼容性高。本发明的防御代码重用攻击方法不会破坏DEP机制,能够避免额外的安全隐患。本发明的防御代码重用攻击方法的开销非常低。
技术领域
本发明涉及应用软件的安全和防护(Security and Protection)技术领域以及代码生成(Code generation)技术领域,具体地说,本发明涉及一种抵御代码重用攻击的方法。
背景技术
为了抵御代码注入攻击(code injection),计算机系统中引入了数据执行保护机制(data execution prevention,DEP),限定任何一块内存区的属性为W⊕X,该机制使得攻击者上载的恶意代码(shell code)无法执行。DEP机制可参考:Pax.homepage of the paxteam,2001.http://pax.grsecurity.net。作为回应,攻击者则提出代码重用攻击(codereuse),该攻击手段能够有效绕过DEP机制。代码重用攻击方案中,攻击者会首先获得目标机器的代码布局,然后通过精心构造载体(payload)利用目标机器的间接跳转(indirectjmp)、间接调用(indirect call)和函数返回指令(ret),将目标机器的代码片段编织起来,进而实现攻击者所需的功能。返回libc库函数(Return-to-libc)和面向return的编程(Return-Oriented Programming,ROP)是两种最为典型的代码重用攻击手段。Return-to-libc通过缓冲区溢出(buffer overflow)覆盖栈上的返回地址来改变程序的执行流,将控制转移到一个特定的库函数中。ROP则利用代码中的gadget(以ret、indirect jmp和indirect call指令为结尾的指令序列)组成载体并通过缓冲区溢出执行载体来完成攻击者的意图。
代码重用攻击的前提条件是要掌握目标机器上代码的布局。因此人们又提出了地址随机化(Address Space Layout Randomization,ASLR)的方案来抵御代码重用攻击的。目前,地址随机化方法已经部署到大多数主流操作系统中,其具体做法是在装载应用时,系统为各个模块随机加载地址,这样攻击者就无法推断出应用运行时的代码布局情况。为了进一步增加攻击者破解代码布局的难度,人们还探讨了更加细粒度(fine-grained)的随机化方法,如函数级别(Function-level)、基本块级别(BasicBlock-level)、指令级别(Instruction-level)的随机化方法。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院计算技术研究所,未经中国科学院计算技术研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510501698.X/2.html,转载请声明来源钻瓜专利网。