[发明专利]一种符号执行方法、装置及系统有效
申请号: | 201210540027.0 | 申请日: | 2012-12-13 |
公开(公告)号: | CN103019862A | 公开(公告)日: | 2013-04-03 |
发明(设计)人: | 忽朝俭;曲富平;左磊;赵粮;薛一波 | 申请(专利权)人: | 北京神州绿盟信息安全科技股份有限公司;北京神州绿盟科技有限公司 |
主分类号: | G06F9/50 | 分类号: | G06F9/50;G06F21/56 |
代理公司: | 北京同达信恒知识产权代理有限公司 11291 | 代理人: | 郭红丽 |
地址: | 100089 北京*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 符号 执行 方法 装置 系统 | ||
技术领域
本发明涉及计算机软件安全领域,尤其涉及一种符号执行方法、装置及系统。
背景技术
符号执行是通过使用符号变量取代输入中的具体值来模拟程序执行的程序分析方法(即用静态分析的形式完成动态分析的工作)。该方法既具有动态分析方法的可靠性(路径敏感,无误报),又具有静态分析方法的完备性(可保证覆盖率,理论上有可能做到无漏报),在软件漏洞检测中正得到越来越多的关注。
符号执行也是一种形式化和自动化的软件分析技术,其核心思想是用符号表示程序的输入数据,并将程序的运算过程逐指令或逐语句地转换为数学表达式,再在程序控制流图的基础上生成符号执行树,并为每一条路径建立一系列的以输入数据为变量的表达式。通常,可以使用一个三元组<指令指针,路径函数,路径条件>来表示符号执行过程。其中,指令指针用于标识当前被分析的指令,路径函数表示程序路径中不同点处变量的值是变量初始值的函数,路径条件是程序路径在各分支点满足的分支条件的合取。路径条件是约束在符号执行中的一种具体表现形式。约束通常是一组等式或不等式的合取,而约束求解的目的是得到等式或不等式组的可满足解。根据获取约束(路径条件和分支条件)的不同方法,可将当前的符号执行方法划分为基于变异和基于生成两类。
其中,基于生成的符号执行依次解释程序中的每一条指令。具体地说,对于非分支指令,其通常需要更新路径函数(通过函数的复合实现);而对于分支指令,其可能需要创建新的符号进程(执行一条新的路径)以探测每个分支目标,并将原路径条件与每个分支目标满足的分支条件取合取作为每个新路径的路径条件。当有多个符号进程时,按照一定的路径选择策略(例如先创建的符号进程先分析)依次选择每一个符号进程进行分析。当某个符号进程结束时,调用约束求解器求解路径条件以获取一个具体输入向量,该向量可驱使程序执行该路径。当所有符号进程结束时,整个符号执行过程结束。
以示例1所示的程序片段为例,下面对现有技术中基于生成的符号执行处理进行说明:
示例1
第一步:在行01,查询(a<100)在当前路径条件(true)下的恒真与恒假性:恒真则前进到行02,恒假则前进到行03,此处即非恒真又非恒假,因此创建一个新的符号进程(#1)以同时分析每条路径,原符号进程(#0)前进到行02,并更新路径条件为(a<100),新符号进程(#1)前进到行03,并更新路径条件为(a<100),所述原符号进程以及新符号进程是逻辑上的虚拟进程,并不是实际的一个进程。
第二步:按照先创建的符号进程先分析策略,分析#0符号进程,即解释行02,然后转向行07,求解路径条件(a<100)得测试用例(0,0);
第三步:按照先创建的符号进程先分析策略,分析#1符号进程,即解释行03;
第四步:在行03,查询(b<100)在当前路径条件((a<100))下的恒真与恒假性:恒真则前进到行04,恒假则前进到行05,此处即非恒真又非恒假,因此创建一个新的符号进程以同时分析每条路径,原符号进程(#1)前进到行04,并更新路径条件为(a<100)∧(b<100),新符号进程(#2)前进到行05,并更新路径条件为(a<100)∧(b<100);
第五步:按照先创建的符号进程先分析策略,分析#1符号进程,即解释行04,然后转向行07,求解路径条件(a<100)∧(b<100)得测试用例(100,0);
第六步:按照先创建的符号进程先分析策略,分析#2符号进程,即解释行05,然后转向行06-07,求解路径条件(a<100)∧(b<100)得测试用例(100,100)。
目前,基于符号执行的程序分析方法在理论上已经基本成熟,而阻止其实用化的最主要问题是路径爆炸。理论上,符号执行技术能够遍历程序中的每一条执行路径并生成测试用例。实际上,程序中的路径数目随着程序中分支的数目近似指数增长,在出现循环的情况下,路径数目的增长更加迅速。由于需要探测的路径是如此之多,这就会产生的路径爆炸问题。在基于生成的符号执行中,与路径爆炸息息相关的另一个问题是资源耗尽,这是因为:上述基于生成的符号执行过程的所有符号进程(逻辑上的进程,也可称为虚拟进程)均在单个符号执行器进程中进行,各符号进程执行过程通常需要在内存中存储与对应路经相关的数据信息,随着需要分析的路径数量增多,需要的内存空间也越来越大,最终不可避免出现资源耗尽。
发明内容
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京神州绿盟信息安全科技股份有限公司;北京神州绿盟科技有限公司,未经北京神州绿盟信息安全科技股份有限公司;北京神州绿盟科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210540027.0/2.html,转载请声明来源钻瓜专利网。