[发明专利]一种基于数据流监控的代码复用攻击防御方法及系统有效
申请号: | 201711257780.8 | 申请日: | 2017-12-04 |
公开(公告)号: | CN108090346B | 公开(公告)日: | 2020-06-02 |
发明(设计)人: | 金海;邹德清;刘本熙 | 申请(专利权)人: | 华中科技大学 |
主分类号: | G06F21/52 | 分类号: | G06F21/52;G06F21/56 |
代理公司: | 华中科技大学专利中心 42201 | 代理人: | 张建伟;曹葆青 |
地址: | 430074 湖北*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种基于数据流监控的代码复用攻击防御方法及系统,属于系统安全技术领域。本发明方法首先由目标程序和共享库源码提取函数、数据信息,再对中间语言代码进行分析,识别目标程序和共享库中的内存访问指令,对指令进行插桩并生成函数跳转表和指令重定位信息。在目标程序加载时,将目标程序和共享库的各个段、堆和栈映射到内存地址空间的对应区域,并设置隔离环境。在目标程序运行时,通过监控异常数据流的方式,防止攻击者对隔离区内部进行搜索,从而防止代码复用攻击。本发明还实现了一种基于数据流监控的代码复用攻击防御系统。本发明适用于X86_64平台上的代码复用攻击防御,能避免由攻击造成的巨大损失。 | ||
搜索关键词: | 一种 基于 数据流 监控 代码 攻击 防御 方法 系统 | ||
【主权项】:
1.一种基于数据流监控的代码复用攻击防御方法,其特征在于,所述方法包括:(1)在编译过程中,从目标程序和共享库源码中提取函数和数据信息;所述函数信息包括函数名、函数入口;所述数据信息包括数据名、数据位置和数据类型;(2)分析步骤(1)编译形成的中间语言代码,根据提取的函数信息和数据信息,识别所述中间语言代码中的内存访问指令;对内存读操作指令、取函数地址指令、对栈中数据进行操作的指令进行插桩,并生成所述函数对应的跳转表;所述插桩,指在不影响程序正常执行的前提下,插入新的指令,或对原有的指令进行修改;(3)识别所述中间语言代码中对数据段中内容进行访问的指令,生成指令重定位表,并在编译时添加到目标语言代码的指令重定位段中,形成包含指令重定位段的可执行文件;(4)在目标程序加载时,将目标程序和共享库的各个段、堆和栈映射到内存地址空间中的隔离区和数据区,利用步骤(3)中生成的重定位表对代码段中访问数据段中内容的指令进行修正,找到正确的数据地址,并初始化隔离环境;所述初始化是指对%bnd0寄存器进行设置,把它设置为隔离区的边界,启用MPX检查机制;以及为隔离栈分配空间,隔离栈用于保存返回地址和栈上的函数指针;(5)在目标程序运行时,检测异常数据流,通过检查触发异常指令的访问地址判定其合法性;判定规则为:如果访问的地址内容为代码或隔离栈数据,则判定为真非法,报出异常,并生成日志信息;否则判定为假非法;此时对内存读操作指令前由步骤(2)插桩的检查指令进行修改,将检查指令替换成无操作指令,防止假非法情况继续出现;所述异常数据流指内存读操作指令,对隔离区内的内存进行了访问。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华中科技大学,未经华中科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201711257780.8/,转载请声明来源钻瓜专利网。
- 上一篇:linux系统外部命令执行方法及装置
- 下一篇:一种数据处理方法和系统