[发明专利]一种基于LLVM的抵御控制流劫持的系统和方法有效
申请号: | 201710725793.7 | 申请日: | 2017-08-22 |
公开(公告)号: | CN107545174B | 公开(公告)日: | 2020-03-10 |
发明(设计)人: | 傅建明;金睿;史鹿曼 | 申请(专利权)人: | 武汉大学 |
主分类号: | G06F21/54 | 分类号: | G06F21/54 |
代理公司: | 武汉科皓知识产权代理事务所(特殊普通合伙) 42222 | 代理人: | 鲁力 |
地址: | 430072 湖*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 llvm 抵御 控制 劫持 系统 方法 | ||
本发明涉及一种基于LLVM的抵御控制流劫持的系统和方法,主要是用来对控制流劫持中的返回导向攻击和跳转导向攻击进行缓解和防御。本方法抵御控制流劫持主要包括以下几种:基于LLVM的编译时函数随机化方法,基于LLVM的强制函数内控制流按正常程序流执行方法。通过以上方法的综合利用,本发明能够有效的在编译阶段打乱函数顺序增加攻击者猜解程序的难度,在运行时限制函数的执行流程,从而抵御控制流劫持。通过测试发现,本发明对软件的开销极低,能够抵御常见的控制流劫持攻击。
技术领域
本发明属于软件安全领域。通过在编译时进行函数随机化和插桩限制控制流的方式,抵御常见控制流劫持攻击。
背景技术
控制流劫持一直是软件漏洞利用的重要方式之一。控制流劫持是通过程序漏洞,修改程序的代码指针或返回地址,将其指向攻击者想要执行的代码。
现有的控制流劫持利用方案有代码注入攻击和代码复用攻击。在代码注入攻击中,攻击者劫持控制流指向以数据形式注入的程序代码,从而执行该代码完成其恶意目的。代码注入攻击已可以被操作系统使用的数据执行保护机制防御。代码复用攻击则将控制流劫持到程序本身的代码片段中,通过服用多个程序代码片段来完成恶意功能。代码复用攻击使用的代码片段多为弹栈指令、间接函数调用指令、间接跳转指令、函数返回指令的组合。其中以函数返回指令结尾的一种代码复用攻击形式(ROP)已经被证明为图灵完备的。
现阶段,随机化和控制流完整性保护用来缓解和防御控制流劫持攻击。地址空间布局随机化是一种比较粗粒度的随机化方案,广泛应用于现代操作系统中,其通过改变内存段的基址,使得攻击者难以直接利用离线分析得到的函数或代码片段地址来构造代码复用攻击。但是通过离线分析配合某段代码的信息泄露,攻击者则可以轻易绕过该技术。控制流完整性检测是通过对程序插桩,在部分改变程序控制流的指令前检测其执行是否合规,已经被应用于Windows 10的edge浏览器中。但是其开销较大,推广较困难。
发明内容
本发明针对现有防御技术存在的上述问题,提出一种基于LLVM的抵御控制流劫持的系统和方法,其目的在于,在LLVM编译器上,通过函数随机化和限制函数内部执行流程来缓解和防御控制流劫持攻击。
本发明的方法采用的技术方案是:
一种基于LLVM的抵御控制流劫持的系统,其特征在于,包括:
函数随机化装置:用于缓解控制流攻击,具体是在LLVM将源文件编译成IR层代码后,识别出函数的信息,将识别出函数的信息保存到函数数组,然后基于随机生成的随机因子,重复function级数组长度次后得到新的function级数组,并将新的function级数组的内容插入IR层代码中;
函数内部控制流限制装置:用于防御控制流攻击,具体是遍历源码寻找会编译成间接跳转指令、间接函数调用指令和返回指令的IR指令,或者识别函数的头部位置后;插入不同的指令。
在上述的一种基于LLVM的抵御控制流劫持的系统,函数随机化装置包括:
函数识别保存模块:在LLVM将源文件编译成IR层代码后,由函数识别保存模块识别出函数的信息,将其保存到函数数组中。其中函数识别可从module入手,在其中使用function级变量遍历函数。函数保存则将遍历到的函数指针存入function级的数组中。值得注意的是,在函数识别中需将在外部定义的函数去除,识别方式为识别是否有函数体,若没有则为外部函数;
函数置乱模块:在函数识别保存模块后,使用rand函数生成随机数做随机因子。重复function级数组长度次,根据其模以function级数组长度,将其值所对应位置与当前次数所对应的位置的数组内容交换,最终得到新的function级数组;
函数删除模块:将IR层代码中的所有非外部函数删除,删除时可以使用系统提供的eraseFromParent方法;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于武汉大学,未经武汉大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710725793.7/2.html,转载请声明来源钻瓜专利网。