用于漏洞发掘的动态符号执行可视化方法.pdf

上传人:g**** 文档编号:1285590 上传时间:2018-04-12 格式:PDF 页数:10 大小:656.79KB
返回 下载 相关 举报
摘要
申请专利号:

CN201610994150.8

申请日:

2016.10.31

公开号:

CN106502912A

公开日:

2017.03.15

当前法律状态:

实审

有效性:

审中

法律详情:

实质审查的生效IPC(主分类):G06F 11/36申请日:20161031|||公开

IPC分类号:

G06F11/36; G06F21/57(2013.01)I

主分类号:

G06F11/36

申请人:

电子科技大学

发明人:

张小松; 陈厅; 张泽亮; 牛伟纳; 陈瑞东; 朱迦南; 全威龙; 王中晴; 周旷

地址:

611731 四川省成都市高新区(西区)西源大道2006号

优先权:

专利代理机构:

成都弘毅天承知识产权代理有限公司 51230

代理人:

李春芳

PDF下载: PDF下载
内容摘要

用于漏洞发掘的动态符号执行可视化方法,本发明涉及符号执行可视化技术领域,解决现有技术在漏洞发掘过程中符号执行不能够动态呈现,难于克服代码覆盖瓶颈导致的遍历效率低等技术问题。本发明主要包括启动漏洞挖掘工具和符号执行可视化工具;将符号执行可视化工具置于等待调用状态并执行漏洞挖掘工具至分支点;由漏洞挖掘工具调用符号执行可视化工具的符号执行树绘制模块构建出分支节点,再由漏洞挖掘工具发送分支信息至分支节点;利用符号执行可视化工具的数据统计模块更新当前所有分支节点的总体统计数据;在总体统计数据中,根据调用数据和分支信息,由符号执行树绘制模块创建下一次分支节点并设置其位置。本发明用于符合执行可视化。

权利要求书

1.用于漏洞发掘的动态符号执行可视化方法,其特征在于,包括如下步骤,
步骤1、启动漏洞挖掘工具和符号执行可视化工具;
步骤2、将符号执行可视化工具置于等待调用状态并执行漏洞挖掘工具至分支点;
步骤3、由漏洞挖掘工具调用符号执行可视化工具的符号执行树绘制模块构建出分支
节点,再由漏洞挖掘工具发送分支信息至分支节点;
步骤4、利用符号执行可视化工具的数据统计模块更新当前所有分支节点的总体统计
数据;
步骤5、符号执行可视化工具继续等待至得到新的分支信息时,紧接着上一个分支点
后,符号执行树绘制模块在图形化界面创建下一个分支节点并设置其位置,重复进行此步
骤直到此轮符号执行结束。
2.根据权利要求1所述的用于漏洞发掘的动态符号执行可视化方法,其特征在于,所述
的步骤3,其中发送分支信息至分支节点,包括
发送:分支语句在源码中的位置信息、分支条件的表达式信息和分支条件的真假取值
信息。
3.根据权利要求1所述的用于漏洞发掘的动态符号执行可视化方法,其特征在于,所述
的步骤5,包括如下步骤,
步骤5.1、在绘制分支节点时,判断当前分支节点的调用状态是否为第一次调用;
步骤5.2.1、如果调用状态为第一次调用,则直接由符号执行树绘制模块构建出新的分
支节点,并将新的分支节点续接在根节点下方;
步骤5.2.2、如果调用状态不是第一次调用,则由符号执行树绘制模块构建出新的分支
节点,并将新的分支节点续接到上一次分支节点真假取值成立的位置。
4.根据权利要求1-3任意一项所述的用于漏洞发掘的动态符号执行可视化方法,其特
征在于,还包括
步骤6、判断出此轮符号执行完成,通过符号执行树绘制模块构建叶子节点标记出当前
路径的结束节点。
5.根据权利要求4所述的用于漏洞发掘的动态符号执行可视化方法,其特征在于,所述
的步骤6,包括如下步骤,
步骤6.1.1、如果此轮符号执行还未完成,则跳转至步骤5;
步骤6.1.2、如果此轮符号执行完成,则由符号执行树绘制模块为最后构建的分支节点
对应真假取值成立的位置续接一个叶子节点,表示此轮符号执行的结束;
步骤6.2、将叶子节点标记为路径结束节点,然后再跳转至步骤2进行下一轮的符号执
行。

说明书

用于漏洞发掘的动态符号执行可视化方法

技术领域

本发明涉及符号执行可视化技术领域,具体涉及用于漏洞发掘的动态符号执行可
视化方法。

背景技术

如今软件测试领域的发展越来越倾向于使用测试自动生成技术来提升软件测试
效率,这项技术现已工业化应用在大量的软件开发项目上了。有一些方法采用从源码中自
动生成测试用例的方式来维持测试自动生成,其中一个就是符号执行。符号执行是一项执
行中收集约束并使用约束表达式来表示代码执行路径的程序分析技术,通过取反约束并求
解可以计算出能达到对应新路径的测试用例,不断地重复这个过程可以逐渐覆盖不同的程
序执行路径,达到挖掘漏洞的目的。

不过这项技术在实际应用中常常遇到一些执行局限或者说覆盖瓶颈的问题,即执
行到一定程度之后无法继续增加代码覆盖率。这些瓶颈可能是由被测程序执行前的预先配
置所引起,也有可能是测试环境的干预造成的,这种问题的原因是多样的,分析过程比较复
杂。在这种情况下,将符号执行和测试生成过程可视化能极大地帮助快速分析问题并准确
定位问题原因。分析人员(也是存在的困难)需要清楚地了解还有哪些代码块没有被遍历,
需要进入哪个分支才能进入这些未被遍历的代码块,需要做哪些可能的修改才能产生对应
的测试用例导向这些未被遍历的代码块。

发明内容

针对上述现有技术,本发明目的在于提供用于漏洞发掘的动态符号执行可视化方
法,解决现有技术在漏洞发掘过程中符号执行不能够动态呈现,难于克服代码覆盖瓶颈导
致的遍历效率低等技术问题。

为达到上述目的,本发明采用的技术方案如下:

用于漏洞发掘的动态符号执行可视化方法,包括如下步骤,

步骤1、启动漏洞挖掘工具和符号执行可视化工具;

步骤2、将符号执行可视化工具置于等待调用状态并执行漏洞挖掘工具至分支点;

步骤3、由漏洞挖掘工具调用符号执行可视化工具的符号执行树绘制模块构建出
分支节点,再由漏洞挖掘工具发送分支信息至分支节点;

步骤4、利用符号执行可视化工具的数据统计模块更新当前所有分支节点的总体
统计数据;

步骤5、符号执行可视化工具继续等待至得到新的分支信息时,紧接着上一个分支
点后,符号执行树绘制模块在图形化界面创建下一个分支节点并设置其位置,重复进行此
步骤直到此轮符号执行结束。

上述方法中,所述的步骤3,其中发送分支信息至分支节点,包括发送:分支语句在
源码中的位置信息、分支条件表达式信息和分支条件的真假取值信息。

上述方法中,所述的步骤5,包括如下步骤,

步骤5.1、在绘制分支节点时,判断当前分支节点的调用状态是否为第一次调用;

步骤5.2.1、如果调用状态为第一次调用,则直接由符号执行树绘制模块构建出新
的分支节点,并将新的分支节点续接在根节点下方;

步骤5.2.2、如果调用状态不是第一次调用,则由符号执行树绘制模块构建出新的
分支节点,并将新的分支节点续接到上一次分支节点真假取值成立的位置。

上述方法中,还包括

步骤6、判断出此轮符号执行完成,通过符号执行树绘制模块构建叶子节点标记出
当前路径的结束节点。

上述方法中,所述的步骤6,包括如下步骤,

步骤6.1.1、如果此轮符号执行还未完成,则跳转至步骤5;

步骤6.1.2、如果此轮符号执行完成,则由符号执行树绘制模块为最后构建的分支
节点对应真假取值成立的位置续接一个叶子节点,表示此轮符号执行的结束;

步骤6.2、将叶子节点标记为路径结束节点,然后再跳转至步骤2进行下一轮的符
号执行。

与现有技术相比,本发明的有益效果:

本发明通过可视化地展现符号执行和测试生成的过程,能让分析人员直观地了解
执行过程的停滞点,并快速辨认出需要着手的修改位置,经过不断地修改、调整和观察可以
突破之前遇到的覆盖瓶颈,然后进一步地继续增加代码覆盖率;

本发明符号执行可视化还有另外一个重要的应用,它能在教育学术领域发挥它的
直观展示能力,提升教学体验,成为学术领域解释说明符号执行的工具,历来要介绍符号执
行都只能使用静态图片和文字描述来解释说明,这种非直观的方式需要使用大量的篇幅来
完成介绍,并且学习者也需要足够的时间和精力来理解这些知识,如果使用可视化方法直
观地动态展现符号执行和测试生成过程,这将很大程度上帮助符号执行的教学展现,提高
这项技术的可理解程度;

本发明实现符号执行的可视化无论对于提高软件测试效率还是提升符号执行教
育学术质量都有着重大的意义。

附图说明

图1为本发明的符号执行树定义图;

图2为本发明的符号执行树绘制算法流程图;

图3为本发明的界面设计图。

具体实施方式

本说明书中公开的所有特征,或公开的所有方法或过程中的步骤,除了互相排斥
的特征和/或步骤以外,均可以以任何方式组合。

下面结合附图对本发明做进一步说明:

实施例1

大多数符号执行工具都支持编写第三方插件,并且开放了内部的接口给插件使
用。此次可视化的调用算法将在插件代码里实现。插件内的算法可以获取到符号执行工具
当前正在执行的代码类型,检测其是否为分支语句,一旦检测到即调用可视化工具进行可
视化操作。

符号执行可视化的具体执行流程如下:

启动漏洞挖掘工具和符号执行可视化工具

符号执行可视化工具等待调用

漏洞挖掘工具执行到分支点

漏洞挖掘工具调用符号执行可视化工具的符号执行树绘制模块构建分支节点,并
传入分支信息(分支位置,分支条件,分支条件的真假取值)。

符号执行可视化工具的数据统计模块更新现在的总体统计数据

如果是第一次调用则直接构建新的分支节点,把它续接在根节点下方;如果不是
第一次,符号执行树绘制模块会将当前新构建的节点在上一次分支节点真假取值成立的位
置上续接成为其子节点。

如果本轮符号执行还未完成则跳转至B;如果本轮符号执行已经完成则为最后构
建的分支节点对应真假取值成立的位置再续接一个叶子节点,并标记它为路径结束节点,
然后跳转至B。

在可视化界面,使用符号执行树来表达整个符号执行的路径扩展流程。符号执行
树是一颗二叉树,表示从程序起始点出发,经过可能的分支一直执行到程序结束点的所有
路径的集合。本发明的可视化界面中符号执行树的图形定义如下:

节点形状:分支节点为矩形,其左下角和右下角连接它的左右分支。左分支表示其
分支条件取真之后的路径,右分支表示其分支条件取否之后的路径。结束节点为圆形,表示
本轮执行的结束。

连接线:所有节点的连接线皆为箭头,表示路径分支路径走向。

填充颜色:所有分支节点皆为黄色。结束节点的颜色取决于它这一轮执行是否有
收集到新的约束以及是否捕获到了漏洞。在没有捕获漏洞的情况下,如果没有收集到新的
约束则标记为灰色,如果收集到了则为绿色。一旦捕获到了漏洞,结束节点标记为红色。

示例程序:



依照示例程序的符号执行树,如图1。

图形内存储的数据的数据字典如下:

1)分支节点基本信息

序列号:按照构建次序标记的序列号;

深度:分支语句所在的代码深度;

分支条件:此分支点内所包含的分支判断条件。

取真分支子节点链接:当分支条件取真之后下一次遇到的第一个分支节点(若这
个分支没有被执行过则置为空,若执行过但其后无分支点则链接结束节点)。取否分支子节
点链接:当分支条件取否之后下一次遇到的第一个分支节点(若这个分支没有被执行过则
置为空,若其后无分支点则链接结束节点)。

2)结束节点基本信息

约束收集情况:此轮执行是否收集到了新约束;

漏洞检测情况:此轮执行是否捕获了漏洞;

3)分支路径箭头基本信息

深度:进入此分支后其代码深度值为多少;

约束:到此路径时所收集到的所有约束条件。

当前分支条件:要进入此分支需要上一个分支点内的判断语句满足什么条件。

实施例2

1)符号执行树绘制模块:本模块构建并绘制符号执行树,一旦被调用即根据传入
的分支数据从符号执行树的根部开始绘制分支节点。当符号执行工具执行到分支时就会调
用此模块,传入分支位置信息(分支所在内存地址值),分支条件,执行时分支条件的真假取
值,此轮所用的测试用例;同时还会有一些数据会在模块内自动生成,例如分支节点的深
度、发现分支点的时间信息等等。然后此模块会将这些信息存储在新构建的分支节点内,与
此同时实时地在用户界面上绘制分支节点,下一次再被调用的时候会根据本次分支的真假
值再在本次构建的分支节点对应的取真或取假支路上续接下一个节点,直到程序执行完毕
没有新的分支为止。本轮执行完后,会在路径末尾续接一个结束节点用于指示本轮执行的
总体情况。每一轮完整的执行都会完整地走出一条程序路径,在符号执行树上反映为一条
从根节点到叶子节点的通路。

2)总体数据统计模块:每一次符号执行树绘制模块被调用的时候,它也会调用本
模块更新数据。本模块用于统计整个符号执行最后的总体数据,例如已遍历分支点的总数
量,分支点的最大深度,路径分歧个数,发现漏洞的路径数据。在符号执行完全结束的时候,
这些信息将会被展现在用户界面上帮助分析。

3)用户界面模块:本模块维持用户操作所需要的交互界面,展现符号执行树的构
建过程,显示当前总体统计数据以及本次所使用的测试用例,同时还会不断打印显示控制
台内的执行信息,指示新产生约束的情况。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何
属于本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应
涵盖在本发明的保护范围之内。

用于漏洞发掘的动态符号执行可视化方法.pdf_第1页
第1页 / 共10页
用于漏洞发掘的动态符号执行可视化方法.pdf_第2页
第2页 / 共10页
用于漏洞发掘的动态符号执行可视化方法.pdf_第3页
第3页 / 共10页
点击查看更多>>
资源描述

《用于漏洞发掘的动态符号执行可视化方法.pdf》由会员分享,可在线阅读,更多相关《用于漏洞发掘的动态符号执行可视化方法.pdf(10页珍藏版)》请在专利查询网上搜索。

用于漏洞发掘的动态符号执行可视化方法,本发明涉及符号执行可视化技术领域,解决现有技术在漏洞发掘过程中符号执行不能够动态呈现,难于克服代码覆盖瓶颈导致的遍历效率低等技术问题。本发明主要包括启动漏洞挖掘工具和符号执行可视化工具;将符号执行可视化工具置于等待调用状态并执行漏洞挖掘工具至分支点;由漏洞挖掘工具调用符号执行可视化工具的符号执行树绘制模块构建出分支节点,再由漏洞挖掘工具发送分支信息至分支节点;。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1