[发明专利]一种二进制程序漏洞自动化定位方法有效

专利信息
申请号: 201310104953.8 申请日: 2013-03-28
公开(公告)号: CN103198260A 公开(公告)日: 2013-07-10
发明(设计)人: 陈恺;张颖君;赵险峰 申请(专利权)人: 中国科学院信息工程研究所
主分类号: G06F21/57 分类号: G06F21/57;G06F17/30
代理公司: 北京君尚知识产权代理事务所(普通合伙) 11200 代理人: 余长江
地址: 100093 *** 国省代码: 北京;11
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 二进制 程序 漏洞 自动化 定位 方法
【说明书】:

技术领域

发明主要涉及漏洞定位方法,更确切地是涉及一种二进制程序漏洞自动化定位方法,属于网络信息安全领域。

背景技术

漏洞已经给Internet带来很大威胁:一方面,攻击者可以利用漏洞入侵系统;另一方面,蠕虫利用漏洞进行传播,并产生破坏。近些年,软件漏洞数量持续上涨,但是其补丁的生成需要很长时间,据分析微软当前的21个漏洞(MS11-087~MS12-007)公布和补丁发布平均需要115天。补丁的生成需要较长时间的主要原因:首先,软件越来越复杂,分析人员需要针对数以万计的指令进行分析,因此,在软件中快速定位漏洞代码是困难的;其次,漏洞种类繁多,分析人员需要熟悉各种类型,也增加了查找漏洞的难度;最后,由于大部分程序并不开源,只有开发人员可以对漏洞分析并打补丁,降低了第三方专业人员的参与度,减少了发布补丁的有效通道。由此可见,需要很长时间来发布漏洞补丁,给用户带来了很大安全威胁。

为了解决上述问题,现有方法主要分为三类:1)一类方法主要针对单一类型的漏洞进行分析(如缓冲区溢出)定位并产生补丁,但是只能解决一种类型的漏洞且大多数方法需要源代码的支持;2)一类方法从正常执行流中研究不变量来定位漏洞,但是这类方法无法寻找出漏洞的真正成因;3)差分切片可以在两个相似的路径中发现不同,帮助分析人员识别执行中的异常,但是需要一个正常执行流作比对,而不同程序输入会使得执行流差异不可控,因此难以找到合适的用于比对的执行流。因此,如何对漏洞进行快速定位是当前补丁生成面临的重要难题,也是当前研究的热点。

发明内容

针对上述问题,本发明的目的在于面向无需源码的二进制程序提供一种二进制程序漏洞自动化定位方法,它支持多种类型的漏洞,包括堆/栈/整数型/缓冲区溢出,内存泄漏,格式字符串等。通过对程序执行路径进行记录,进而对异常位置进行分析,产生的相应漏洞依赖树(以下简称“依赖树”),有效减少需要分析指令的数量,实现对漏洞位置的快速定位。在此基础上,提出一种简单有效的样例补丁生成方法,有效保证系统不被恶意利用。

根据以上目的,实现本发明的技术方案是:

一种二进制程序漏洞自动化定位方法,其步骤为:

1)运行待检测二进制程序,记录从该程序开始运行到出错过程中所有指令;

2)根据所记录的指令构建漏洞依赖树,并根据所构建漏洞依赖树从所记录指令中检测指令中的漏洞指令;其中,构建所述漏洞依赖树的过程中,每增加若干个节点检查是否出现漏洞候选节点,如果出现,则产生该漏洞候选节点的临时补丁;

3)观察该临时补丁是否有效,如果有效则停止构建漏洞依赖树,并作为定位到漏洞位置的依据;否则继续构建漏洞依赖树。

进一步的,所述漏洞依赖树中的节点表示该程序中的指令,指令之间通过边连接。

进一步的,所述漏洞依赖树的构建方法为:

1)初始化一工作集wl为空集;对所记录指令中每一执行路径,从该执行路径的最后一条指令开始,顺次取出一指令i;

2)将指令i对应的指令地址加入漏洞依赖树v,将由指令i使用的变量加入工作集wl;

3)初始化一变量branchNum=0;

4)如果指令i不为空且工作集wl不为空,则进行以下循环:如果指令i是依赖输入数据的分支指令,则branchNum=branchNum+1,即对依赖于外部输入的分支进行计数,i指向前一条指令,继续循环过程;如果当前指令i定义的变量var和wl有交集,则从wl中移除这个变量var,并在wl中加入当前指令i使用的变量;计算边长度edgeLen=branchNum-j为指令j到树根的长度,指令j为漏洞依赖树中使用var的节点;然后在漏洞依赖树v中增加节点i,在漏洞依赖树v中增加边(j,i),其长度为edgeLen。

进一步的,所述每增加若干个节点检查是否出现漏洞候选节点的方法为:a)每增加若干个节点后,检测所述漏洞依赖树中连接每一新增加节点的入边和出边,如果其长度的比值大于设定阈值则将此节点作为漏洞候选节点;b)选择所增加若干个节点中改变变量范围值超过设定比例的节点,将此节点作为漏洞候选节点。

进一步的,所述记录从该程序开始运行到出错过程中所有指令的方法为:首先设定一阈值;然后从该程序开始运行到出错过程中,对每条指令进行记录,包括每个分支指令和选用的分支进行记录,当记录指令超过设定阈值时则新记录的指令将覆盖最先记录的指令,进行循环记录。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院信息工程研究所,未经中国科学院信息工程研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201310104953.8/2.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top