[发明专利]一种用于漏洞发掘的动态符号执行路径搜索方法有效
| 申请号: | 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;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于电子科技大学,未经电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410230479.8/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种降血压药酒
- 下一篇:一种治疗阑尾炎的中药制剂及制备方法





