[发明专利]一种用于漏洞发掘的动态符号执行路径搜索方法有效

专利信息
申请号: 201410230479.8 申请日: 2014-05-28
公开(公告)号: CN104008053A 公开(公告)日: 2014-08-27
发明(设计)人: 张小松;黄金;牛伟纳;陈瑞东;王东;徐浩然;白金;赖特;李金栓;于洲 申请(专利权)人: 电子科技大学
主分类号: G06F11/36 分类号: G06F11/36
代理公司: 成都华典专利事务所(普通合伙) 51223 代理人: 徐丰
地址: 611731 四川省成*** 国省代码: 四川;51
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 用于 漏洞 发掘 动态 符号 执行 路径 搜索 方法
【说明书】:

技术领域

发明涉及软件测试领域,提供了一种用于漏洞发掘的动态符号执行路径搜索方法。

背景技术

软件开发是一项脑力密集型且需要丰富编程经验的一项工作,因此,开发一款正确性、稳定性、安全性都符合要求的软件非常困难。软件测试是保证软件可靠性和安全性的关键技术,在软件开发周期中占据着非常重要的地位。动态符号执行是目前软件安全、软件测试研究领域的热点技术之一,它通过自动生成测试用例,可以以获取高代码覆盖率,被用于当前许多主流软件测试工具中。利用动态符号执行技术,通过符号化的方法探索遍历程序的所有可能执行路径,产生路径约束,并对约束条件求解,自动化产生测试用例,在理论上能够实现对被测程序全路径的覆盖,再辅助其他漏洞检测技术,可以全面、准确地检测程序中潜在的漏洞。

使用动态符号执行进行漏洞发掘的一般过程如下:首先对分析的程序文件(可执行文件或者字节码文件)进行二进制插桩,在第一次执行时,给程序提供一个随机的或选择的初始输入数据,然后借助插桩代码对输入数据符号化,在程序执行过程中,同时进行符号执行。插桩代码会记录符号化的变量在每个执行路径下的操作。在执行过程中调用漏洞检测模块检测程序中的漏洞;符号执行在程序的条件分支语句处搜集符号变量的路径分支条件(路径约束条件)。在一次执行完之后,根据搜集到的约束条件形成一个约束表达式,对这些表达式按照路径搜索算法将其中某个条件取反,调用约束求解器进行求解,从而生成新的测试用例。然后新的测试用例会沿不同路径进行下一次执行过程,如果在执行过程中检测到漏洞,则将记录漏洞信息并保存相应测试用例。符号执行过程将一直继续直到所有可能的执行路径都被测试完。

漏洞发掘方式可以分为被动式和主动式,传统的漏洞发掘方式大多都是被动式。被动式漏洞发掘指的是当某个测试用例触发了软件漏洞,那么该软件漏洞就被挖掘出来;而主动式漏洞发掘是指测试用例本身没有触发漏洞,但在执行过程中,通过某种方法产生了约束,通过求解该约束,产生新的测试用例,而该新测试用例能够触发漏洞。被动式漏洞发掘适合检测路径不变的漏洞,而对于路径变化的漏洞,则需采用主动式的检测方式。

路径搜索算法是动态符号执行过程中一个重要的组成部分,路径搜索的目的是实现高的代码覆盖率,保证执行过程能够遍历程序的所有可能执行路径,从而能够全面的产生测试用例对程序进行检测。到目前为止,已出现很多路径搜索方法可供选择,如:广度优先搜索、代搜索、随机搜索、元策略等算法。

但是,传统的广度优先路径搜索算法,没有针对漏洞发掘进行优化。其他的路径搜索算法(代搜索、随机搜索等)主要目的是提高代码覆盖率,也不是针对漏洞发掘的。本发明提出了一种基于代搜索算法的路径搜索算法优化方法,标记每次触发漏洞的路径与深度。对于每一个新的测试用例,我们计算该用例执行路径与上次触发漏洞路径的相似度r,并以此计算该路径的权重分数score,在下次执行测试时选择执行score值最大的测试用例,以减少测试中漏洞触发需要的时间,使测试能够在更短的时间内发现更多的漏洞。

在利用符号执行进行漏洞检测时,传统路径搜索算法侧重于路径搜索,是通用的高代码覆盖率路径搜索算法,不是针对漏洞发掘的路径搜索算法;同时,传统路径选择算法没有利用触发漏洞的路径约束条件,路径选择的标准是提高代码覆盖率,在路径选择时,能够触发漏洞的执行路径可能不一定能优先得到执行,从而使触发漏洞的时间具有一定的随机性,降低了测试大型软件漏洞的效率。

发明内容

本发明的目的在于在传统代搜索算法的基础之上,设计了一个改进的路径搜索方法。一个触发漏洞路径的兄弟路径,是潜在的在漏洞触发路径。在路径探索时,记录每次触发漏洞的路径,对于该路径的兄弟路径,在下次执行测试时优先选择执行,以便更早的对这些区域进行测试,从而更快的触发漏洞,提高大型软件漏洞检测的效率。

本发明为了实现上述目的采用以下技术方案:

一种用于漏洞发掘的动态符号执行路径搜索算法,其特征在于:在使用动态符号执行对被测程序的可能执行路径进行搜索的过程中,标记实际执行被测程序时触发漏洞的路径,对于路径探索过程中生成的每一个新的测试用例,计算该测试用例执行路径与上次触发漏洞路径的相关度r,并以此计算该测试用例对应执行路径的权重分数score,在下次执行测试时选择score值最大的测试用例执行。 

上述技术方案中,所述的路径搜索具体步骤为:

2-1、给出一个初始测试输入作为测试用例;

2-2、将初始测试输入加入符号执行工作集,并初始化该初始测试输入的路径权重分数为0;

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

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

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

×

专利文献下载

说明:

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

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

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

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

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

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

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

钻瓜专利网在线咨询

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

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