当前位置: 首页 > 专利查询>东南大学专利>正文

一种基于目标前置区域搜索的定向模糊测试方法技术

技术编号:35459900 阅读:49 留言:0更新日期:2022-11-03 12:25
本发明专利技术涉及一种基于目标前置区域搜索的定向模糊测试方法,包括:静态分析程序中针对目标点的前置基本块,并根据是否为前置基本块进行差异化插桩;对程序进行覆盖引导的灰盒模糊测试,在测试的过程中执行自修改,将存在间接调用的非前置基本块修改为前置基本块;在每次测试用例执行后,根据前置基本块组成的边的覆盖情况更新全局成熟度;采用基于全局成熟度的能量调度、种子选择与种子变异方法来实现定向模糊测试。该基于目标前置区域搜索的定向模糊测试方法有效解决当前定向灰盒模糊测试中间接调用的问题,减轻程序静态分析代价,提高目标点的路径覆盖率。目标点的路径覆盖率。目标点的路径覆盖率。

【技术实现步骤摘要】
一种基于目标前置区域搜索的定向模糊测试方法


[0001]本专利技术属于软件安全测试领域,特别是涉及一种基于目标前置区域搜索的定向模糊测试方法。

技术介绍

[0002]在当今的信息时代,互联网技术已经渗透到了人类社会的各个方面,极大地推动着社会的进步。但与此同时,网络安全已经成为互联网技术发展的重大问题,由于互联网中大量的功能和应用都是由软件实现,因此软件安全在网络安全的研究和实践中扮演着至关重要的角色。由于软件开发过程的系统性或个人性疏忽,极容易导致软件漏洞,漏洞具有较强的隐蔽性且可以引发非常严重的危害。
[0003]模糊测试是一种基于缺陷注入的自动化软件漏洞挖掘技术,其核心思想是将自动或半自动生成的随机数据输入到一个程序中,并监视程序是否异常,若发生崩溃、断言失败等情况,即可发现可能的程序错误,比如内存泄漏、段错误与溢出等。随着软件漏洞检测技术如模糊测试的发展,软件漏洞的检测更加偏向于小规模检测,由于软件更新时只会修改部分区域,其他的大部分区域不需要进行测试,定向模糊测试的需求越来越高。
[0004]Bohme等人于2017年第一次提出定向灰盒模糊测试的概念,并在此基础上实现了定向灰盒模糊测试器AFLGo,它在之前灰盒模糊测试工作的基础上通过计算每一个基本块与目标点的距离,筛选出距离目标点更近的测试用例,并使用模拟退火策略来指导探索与定向阶段。Chen等人对AFLGo进行了优化,提出了Hawkeye,改进了距离计算方法、能量调度方法、种子选择队列与种子变异方法。Du等人提出偏差基本块的概念,将距离导向优化为偏差基本块距离,并使用了数据流分析在定向灰盒模糊测试中。上述的工作可以在一定程度上优化定向的效果,达到预期的目标,但是存在着静态分析开销过高与无法处理程序中的间接调用的问题,在实际的软件测试中可能会遗漏掉关键的路径从而造成漏报。
[0005]公开(公告)号为CN112416806B的专利《一种基于标准文档分析的JS引擎模糊测试方法》提出一种基于标准文档分析的JS引擎模糊测试方法,通过无监督深度学习生成大量测试用例,并结合用例中包含的API并对其查询ECMA

262标准进行解析。然而这种方法主要针对的是测试用例生成,在生成之后通过特定的规则来进行过滤与筛选,对于定向模糊测试的实际效果与准确性并没有过多的关注,而且没有办法运用在更加广泛的程序模糊测试中。
[0006]公开(公告)号为CN114661578A的专利《基于支配点覆盖的导向式灰盒模糊测试方法及装置》通过计算程序中对产生触发崩溃有益的信息统计,来进行相关的插桩,在模糊的过程中根据这些信息来动态调整能量调度与种子选择等策略。然而,此专利技术只是在上述工作的基础上更加细致地考虑了程序细节,并没有从根本上解决静态分析与间接调用的问题,该方法的效率与灵活性有待加强。
[0007]综上所述,当前定向灰盒模糊测试领域中的一些工作与公开专利还存在以下待解决的问题:
[0008](1)无法处理程序的间接调用。当前的定向灰盒模糊测试工作对于程序的分析集中在静态分析阶段,因此对于静态分析中无法识别到的间接调用问题无法解决,间接调用的存在会导致定向过程中信息不准确,最后导致结果的误差。
[0009](2)静态分析阶段开销过高。当前的定向灰盒模糊测试工作静态分析需要对程序提取大量的基本信息,这会导致模糊测试的巨大开销,由于定向工作针对不同的程序目标点静态信息无法复用,因此这一开销不能轻易忽略。
[0010](3)能量调度算法不精确。当前定向灰盒模糊测试工作采用的能量调度是基于模拟退火的算法,而其中全局温度是随时间线性下降的,这一趋势并不能实际地反映每一个不同程序的实际测试情况。

技术实现思路

[0011]为解决上述问题,本专利技术公开了一种基于目标前置区域搜索的定向模糊测试方法。该方法能够有效地解决当前定向灰盒模糊测试中无法处理间接调用的问题,减小静态分析的开销,增加定向灰盒模糊测试的效果。基于该方法实现的定向灰盒模糊测试工具能够根据具体的程序与目标点进行相关的测试,最终发现程序可能的漏洞。
[0012]本专利技术提供了一种基于目标前置区域搜索的定向模糊测试方法,包括以下步骤:
[0013]步骤1:静态分析程序中针对目标点的前置基本块,并根据是否为前置基本块进行差异化插桩。
[0014]步骤2:对程序的前置基本块区域进行覆盖引导的灰盒模糊测试,在测试的过程中执行自修改,将存在间接调用的非前置基本块修改为前置基本块。
[0015]步骤3:在每次测试用例执行后,根据前置基本块组成的边的覆盖情况更新全局成熟度。
[0016]步骤4:采用基于全局成熟度的能量调度、种子选择与种子变异方法来实现定向模糊测试。
[0017]进一步地,所述步骤1,根据静态分析结果进行差异化插桩,具体为:使用llvm静态分析构造程序iCFG,进而求出所有的目标点前置基本块;前置基本块插桩的序号前两位为00,非前置基本块插桩的序号前两位为11。
[0018]进一步地,所述步骤2,对程序的前置基本块区域进行覆盖引导的灰盒模糊测试,具体为:在程序执行中使用基本块的序号来计算边的值,并统计在边的映射图中;边的映射图分为四个区域,第一区域为前置基本块区域,第二区域为程序自修改区域;在模糊测试过程中,以增加第一区域边覆盖为目的,并通过第二区域的改变来判断间接调用与自修改情况。
[0019]进一步地,所述步骤3,覆盖引导的灰盒模糊测试过程中执行前置基本块自修改,具体为:模糊测试开始之前进行二进制扫描与修改,并创建二进制副本供自修改;模糊测试过程中在边映射图中检测到触发条件后,调用二进制副本,执行自修改操作。
[0020]进一步地,所述步骤4,采用基于全局成熟度的能量调度与种子选择方法,具体为:采用全局成熟度来控制模糊测试过程,全局成熟度由边跟踪映射中前置基本块组成的边覆盖情况来计算;采用基于全局成熟度的模拟退火算法,来进行模糊测试过程中的能量调度;根据全局成熟度,来动态自适应进行种子选择与种子变异。
[0021]本专利技术提供一种基于目标前置区域搜索的定向模糊测试方法,具有以下有益效果:
[0022](1)解决了当前定向灰盒模糊测试中间接调用的问题。本方法通过设计自修改前置基本块,在执行中识别到间接调用后进行更正,将某些误判的非前置基本块修正为前置基本块。这一问题的解决会使得模糊测试更加全面,相较于现有的定向灰盒模糊测试,能够覆盖到更多的目标路径。
[0023](2)降低了定向灰盒模糊测试中静态分析的开销。本方法优化了现有定向灰盒模糊测试方法中的距离度量,在静态分析中无需计算每个基本块到目标点的距离,有效地降低了开销,提高了效率。
[0024](3)提供了更加精确的能量调度算法。本方法提出了全局成熟度的概念,将前置基本块空间的覆盖情况作为全局成熟度来取代全局温度。基于全局成熟度的改进针对不同的程序可以有不同的自适应效果,更加精确地判断出程序模糊的状态,并根据状态来分配能量、选择种本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于目标前置区域搜索的定向模糊测试方法,其特征在于,该方法包括以下步骤:步骤1:静态分析程序中针对目标点的前置基本块,并根据是否为前置基本块进行差异化插桩;步骤2:对程序的前置基本块区域进行覆盖引导的灰盒模糊测试,在测试的过程中执行自修改,将存在间接调用的非前置基本块修改为前置基本块;步骤3:在每次测试用例执行后,根据前置基本块组成的边的覆盖情况更新全局成熟度;步骤4:采用基于全局成熟度的能量调度、种子选择与种子变异方法来实现定向模糊测试。2.根据权利要求1所述的一种基于目标前置区域搜索的定向模糊测试方法,其特征在于:所述步骤1:根据静态分析结果进行差异化插桩,使用llvm静态分析构造程序iCFG,进而求出所有的目标点前置基本块;前置基本块插桩的序号前两位为00,非前置基本块插桩的序号前两位为11。3.根据权利要求1所述的一种基于目标前置区域搜索的定向模糊测试方法,其特征在于,所述步骤2:对程序的前置基本块区域进行覆盖引导的灰盒模糊测试,具体为:在程序执行中使用基本块的序号来计算边的值,并统计在边的映射图中;边的映射图分为四个区域,第一区域为前置基本块区域,第二区域为程序自修改区域;在模糊测试过程中,以增加第一区域边覆盖为目的,并通过第二区域的改变来判断间接调用与自修改情况。4.根据权利要求1所述的一种基于目标前置区域搜索的定向模糊测试方法,其特征在于,所述步骤3:覆盖引导的灰盒模糊测试过程中执行前置基本块自修改,具体为:模糊测试开始之前进行...

【专利技术属性】
技术研发人员:张玉健刘耀坤黄晓丫
申请(专利权)人:东南大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1