当前位置: 首页 > 专利查询>东北大学专利>正文

一种代码复用攻击防御系统及方法技术方案

技术编号:13896534 阅读:54 留言:0更新日期:2016-10-25 03:18
本发明专利技术提供一种代码复用攻击防御系统及方法,系统包括高速缓存Cache、内存Memory、CPU、轻量级线性加密架构LEA。轻量级线性加密架构LEA包括:硅PUF模块、加密解密单元EDU、KEY_CFI寄存器、LEN_CFI寄存器。本发明专利技术基于物理不可克隆函数的线性加密结构以极低的性能开销来有效抵抗代码复用攻击,不需要额外的处理和扩展指令集,针对以构造ret指令链为主要攻击方式的ROP攻击以及以构造间接跳转指令链为攻击方式的JOP攻击效果十分明显。使用PUF生成密钥,根据密钥和加密的长度对内存中的指令进行加密、解密操作。该防御系统使用LEA线性加解密,不需要更改处理器指令集且硅PUF模块无需高开销的纠错机制,所以开销显著降低。硅PUF模块产生的密钥不可克隆且可动态更新,安全性显著提高。

【技术实现步骤摘要】

本专利技术属于软件安全
,具体是一种代码复用攻击防御系统及方法
技术介绍
随着信息技术的高速发展,各类软件的功能得到极大丰富,给人们的生活和工作带来了很大的便利,与此同时软件安全问题层出不穷,严重影响了计算机的安全,对用户的数据安全构成极大的威胁。传统的攻击技术以代码注入攻击为主,该技术将需要执行的代码注入到一段内存区域中,通过溢出漏洞使得程序执行注入的代码。该技术已经可以被诸如W⊕X等软件安全机制成功防御,而新兴的代码复用攻击则可以轻松绕过这些传统的防御机制。代码复用攻击利用程序之中原有的代码构造出可以利用的代码片段(代码片段由若干汇编指令组成,每一个代码片段可以实现不同的功能,例如,向固定的寄存器写入指定的值),通过将实现不同功能的代码片段相结合,攻击者可以构造出实现与恶意代码同等功能的代码执行序列。由于代码复用攻击使用被攻击程序现有代码进行组合构造,而不需要任何额外的代码,使得防御变得十分困难。现有比较流行的代码复用攻击根据构造代码片段(gadgets)的结尾不同分为Return-oriented Program(ROP)攻击和Jump-oriented Program(JOP)攻击。ROP攻击主要以ret为gadgets结尾,该攻击已经被证明是图灵完备的。而JOP攻击则以间接跳转指令作为结尾。著名的苹果越狱软件evasiOn则是代码复用攻击的典型代表,该软件利用多种漏洞,构造了ROP gadgets,成功的绕过了苹果的安全机制,拿到了最高权限。因此,代码复用攻击的危害极大,如何防御代码复用攻击是当前软件安全领域亟待解决的关键问题。近年来,研究人员针对代码复用攻击提出了很多防御方法,较成熟的有影子栈防护方法,ret频率检测方案,代码随机化技术等。但是由于这些方案都是基于软件的形式进行防御,性能开销很大,使它们很难被应用到实际的系统中。
技术实现思路
本专利技术针对现有防御技术存在的上述问题,提供一种代码复用攻击防御系统及方法,基于物理不可克隆函数的线性加密结构以极低的性能开销来有效抵抗代码复用攻击,不需要额外的软件处理和扩展指令集。为了达到上述目的,本专利技术所采用的具体技术方案如下:一种代码复用攻击防御系统,包括高速缓存Cache、内存Memory;还包括:CPU:进行call指令、间接跳转指令、ret指令的识别,存储指令及其所处位置;程序被加载到内存Memory中时将间接跳转指令目的地址处指令传送给轻量级线性加密架构LEA进行加密;执行call指令时,将call指令的返回地址转到轻量级线性加密架构LEA进行加密,执行ret指令时,将ret指令的返回地址转到轻量级线性加密架构LEA进行解密,执行间接跳转指令时将跳转目的地址处指令传送给轻量级线性加密架构LEA进行解密;轻量级线性加密架构LEA(Linear Encryption Architecture,LEA):产生加密解密的密钥key,存储密钥key及其长度len;程序被加载到内存Memory时加密间接跳转指令目的地址处指令,CPU识别出间接跳转指令时对其目的地址处指令进行解密,CPU识别出call指令时对其返回地址加密,CPU识别出ret指令时对其返回地址解密。所述轻量级线性加密架构LEA包括:硅PUF模块、加密解密单元EDU、KEY_CFI寄存器、LEN_CFI寄存器;硅PUF模块:产生加密解密的密钥key及其长度len,加密解密的密钥key存储在KEY_CFI寄存器中,密钥key的长度len存储在LEN_CFI寄存器中;加密解密单元EDU用于根据硅PUF模块产生的加密解密的密钥key及其长度len,对call指令的返回地址加密、对ret指令的返回地址解密、对间接跳转指令的跳转目的地址处指令进行加密和解密。所述加密解密的密钥key的长度len设置规则为从l到小于所有返回地址的长度、间接跳转目的地址处指令的长度中的最小长度值的随机数。一种所述的代码复用攻击防御系统进行代码复用攻击防御的方法,包括:a)程序开启时,CPU调用硅PUF模块产生加密解密的密钥key并分别存储在KEY_CFI寄存器中,根据长度设置规则产生长度len并存储在Len_CFI寄存器中;b)程序加载到内存Memory中,CPU查找所有间接跳转指令的跳转目的地址;c)CPU将查找到的跳转目的地址处指令传送给加密解密单元EDU;d)加密解密单元EDU根据密钥key及其长度len对这些指令进行加密,加密结果返回到CPU;e)CPU将这些加密结果返回给内存Memory;f)程序执行过程中,内存Memory实时将程序中的指令传送给高速缓存Cache,CPU取出高速缓存Cache中的指令,当取出的指令是call指令时,跳转到g),当取出的指令是ret指令时,跳转到i),当取出的指令是间接跳转指令时,跳转到m),当程序执行完毕则退出;g)将call指令的目的地址传送给加密解密单元EDU;h)加密解密单元EDU根据密钥key及其长度len对call指令对应的目的地址进行加密,并将加密后的目的地址传送到栈中;i)CPU根据call指令的原目的地址跳转继续执行程序,跳到步骤f);i)将ret指令的目的地址传送给加密解密单元EDU;k)加密解密单元EDU根据密钥key及其长度len对ret指令进行解密,并将解密后的目的地址传送到CPU中;l)CPU根据解密后的目的地址跳转,跳到步骤f);m)在执行到目的地址处指令加载到CPU时,将CPU的IR寄存器中的内容传送给加密解密单元EDU;n)加密解密单元EDU根据密钥key及其长度len对这些指令进行解密,并将解密结果返回给CPU的IR寄存器;o)CPU根据IR寄存器内部解密后的指令继续执行,跳转到f)。有益效果:本专利技术基于物理不可克隆函数的线性加密结构以极低的性能开销来高效抵抗代码复用攻击,不需要额外的软件处理和扩展指令集。本专利技术解决了代码复用攻击的防御问题,针对以构造ret指令链为主要攻击方式的ROP攻击以及以构造间接跳转指令链为攻击方式的JOP攻击效果十分明显。本专利技术创新性的使用PUF(Physical Unclonable Function,PUF)即时的产生易失性响应来进行加密解密,响应不定期的重新生成,提高了安全性。通过在运行时加密与解密返回地址的方式来抵御ROP攻击,通过在编译时加密间接跳转指令所对应的目的地址处一定字节的指令与运行时解密的对应指令的方式去抵御JOP攻击。LEA使用PUF产生的不可克隆密钥。这个密钥对于每个系统来说都是独一无二的。本专利技术使用PUF生成密钥,而后根据密钥和加密的长度进行加密、解密操作。由于该防御系统使用LEA线性加解密,不需要更改处理器指令集且硅PUF模块无需高开销的纠错机制,所以开销显著降低。同时由于硅PUF模块产生的密钥可动态更新,所以安全性显著提高。附图说明图1是对call-ret指令实施本专利技术方法的例子,(a)为原始部分指令,(b)为原始栈空间内容,(c)为新部分指令(与(a)相同),(d)为修改后栈空间内容;图2是本专利技术具体实施方式中代码复用攻击防御系统的连接原理图;图3是本专利技术具体实施方式中加密解密单元EDU的简化的原理图;图4是本专利技术具体实施方式中产生可更新密钥的基于环形振荡器的可重构本文档来自技高网
...

【技术保护点】
一种代码复用攻击防御系统,包括高速缓存Cache、内存Memory,其特征在于,还包括:CPU:进行call指令、间接跳转指令、ret指令的识别,存储指令及其所处位置;程序被加载到内存Memory中时将间接跳转指令对应的跳转目的地址处指令传送给轻量级线性加密架构LEA进行加密;执行call指令时,将call指令的返回地址转到轻量级线性加密架构LEA进行加密,执行ret指令时,将ret指令的返回地址转到轻量级线性加密架构LEA进行解密,执行间接跳转指令时将跳转目的地址处指令传送给轻量级线性加密架构LEA进行解密;轻量级线性加密解密架构LEA:产生加密解密的密钥key,存储密钥key及其长度len;程序被加载到内存Memory时加密间接跳转指令的目的地址处指令,CPU识别出间接跳转指令时对其目的地址处指令进行解密,CPU识别出call指令时对其返回地址加密,CPU识别出ret指令时对其返回地址解密。

【技术特征摘要】
1.一种代码复用攻击防御系统,包括高速缓存Cache、内存Memory,其特征在于,还包括:CPU:进行call指令、间接跳转指令、ret指令的识别,存储指令及其所处位置;程序被加载到内存Memory中时将间接跳转指令对应的跳转目的地址处指令传送给轻量级线性加密架构LEA进行加密;执行call指令时,将call指令的返回地址转到轻量级线性加密架构LEA进行加密,执行ret指令时,将ret指令的返回地址转到轻量级线性加密架构LEA进行解密,执行间接跳转指令时将跳转目的地址处指令传送给轻量级线性加密架构LEA进行解密;轻量级线性加密解密架构LEA:产生加密解密的密钥key,存储密钥key及其长度len;程序被加载到内存Memory时加密间接跳转指令的目的地址处指令,CPU识别出间接跳转指令时对其目的地址处指令进行解密,CPU识别出call指令时对其返回地址加密,CPU识别出ret指令时对其返回地址解密。2.根据权利要求1所述的代码复用攻击防御系统,其特征在于,所述轻量级线性加密架构LEA包括:硅PUF模块、加密解密单元EDU、KEY_CFI寄存器、LEN_CFI寄存器;硅PUF模块:产生加密解密的密钥key及其长度len,加密解密的密钥key存储在KEY_CFI寄存器中,密钥key的长度len存储在LEN_CFI寄存器中;加密解密单元EDU用于根据硅PUF模块产生的加密解密的密钥key及其长度len,对call指令的返回地址加密、对ret指令的返回地址解密、对间接跳转指令的跳转目的地址处指令进行加密和解密。3.根据权利要求1或2所述的代码复用攻击防御系统,其特征在于,所述加密解密的密钥key的长度len设置规则为从1到小于所有返回地址的长度、间接跳转目的地址处指令的长度中的最小长度值的随机数。4...

【专利技术属性】
技术研发人员:张吉良吕勇强金睿
申请(专利权)人:东北大学
类型:发明
国别省市:辽宁;21

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1