多目标导向模糊测试方法及系统技术方案

技术编号:33282019 阅读:27 留言:0更新日期:2022-04-30 23:42
本发明专利技术涉及一种多目标导向模糊测试方法及系统,所述方法包括:构建被测程序的函数调用图和程序控制流图;生成增强目标序列并计算目标序列的优先级;对被测程序进行插桩并生成插桩的二进制程序;判断当前模糊器所处阶段,并根据所处阶段从相应的种子队列取种子;变异种子生成测试输入;执行生成的二进制程序并记录测试输入的路径分支覆盖度和目标序列覆盖度;当测试输入提高了目标序列覆盖度,则基于种子多特征的综合能力、模拟退火算法和AFL原始能量,为测试种子分配能量;当测试输入提高了目标序列覆盖度,将测试种子放入导向种子队列,该方法增强了序列引导的多目标导向模糊测试方法触发漏洞的能力。试方法触发漏洞的能力。试方法触发漏洞的能力。

【技术实现步骤摘要】
多目标导向模糊测试方法及系统


[0001]本专利技术属于计算机软件测试
,尤其涉及一种多目标导向模糊测试方法及系统。

技术介绍

[0002]模糊测试作为一种重要的测试技术,可以发现软件中存在的缺陷或安全漏洞,在软件质量保证上起到了积极的作用。模糊测试技术是通过不断生成输入来触发被测程序中未知的错误。目前模糊测试主要包括黑盒测试和灰盒测试,其中,黑盒测试是使用完全随机构造的输入来测试程序;而灰盒测试是通过反馈来引导模糊测试,其一般包括以下步骤:构造输入、执行程序、结果反馈、选取种子及种子变异。而当前使用的模糊测试多是基于覆盖率反馈引导的,其方法的核心是将种子变异结果中能够触发新的执行路径的输入作为下一轮的种子继续进行变异,从而获得更大的代码覆盖率,进而更大可能的发现程序中的漏洞。
[0003]但是传统模糊测试考虑实现最大的代码覆盖率可能会在一些漏洞无关的程序空间浪费大量的资源。而相比之下,导向型模糊测试是通过在代码中设定目标点,引导模糊测试重点测试目标代码片区,而不会浪费资源探索漏洞无关的程序空间,因此主要应用在脆弱性分析、补丁测试及缺陷复现等场景中。
[0004]现阶段导向模糊测试的工作可以很好的处理单个目标的情况,但是软件中通常不止一个漏洞,往往存在多个漏洞且这些漏洞存在一定的关系,然而现阶段的导向模糊测试工作在处理多目标时性能较差。

技术实现思路

[0005]本专利技术意在提供一种多目标导向模糊测试方法及系统,以解决现阶段的导向模糊测试工作在处理多目标时性能较差的问题,本专利技术要解决的技术问题通过以下技术方案来实现:
[0006]一方面,本专利技术提供了一种多目标导向模糊测试方法,包括:
[0007]根据预设的多个目标基本块从被测程序中获取对应的多个目标序列,并计算所述多个目标序列的优先级,其中所述多个目标序列的优先级用以表征种子多特征的综合能力;
[0008]在被测程序执行前,基于llvm对所述被测程序进行插桩操作以生成插桩的二进制程序,所述插桩的二进制程序在所述被测程序执行过程中实时获取所述被测程序的运行信息;
[0009]根据所述运行信息判断模糊测试主程序所处阶段,并根据所述模糊测试主程序所处阶段从相应的种子队列中提取测试种子;
[0010]对所述测试种子进行变异处理并生成测试输入;
[0011]将所述测试输入导入所述被测程序进行执行,并通过所述插桩的二进制程序获取所述被测程序测试过程中的运行信息;
[0012]从所述被测程序测试过程中的运行信息中获取所述测试输入的路径分支覆盖度和目标序列覆盖度;
[0013]如果所述路径分支覆盖度满足第一预设条件和/或所述目标序列覆盖度满足第二预设条件,则基于种子多特征的综合能力,模拟退火算法和AFL原始能量调度计算得到所述被测种子的分配能量;
[0014]如果所述目标序列覆盖度满足第二预设条件,则将所述测试种子放入导向种子队列,否则将所述测试种子放入覆盖种子队列。
[0015]优选地,所述根据预设的多个目标基本块从被测程序中获取对应的多个目标序列的步骤包括:
[0016]利用预先编写的图抽取工具对所述被测程序的代码进行处理以构建得到所述被测程序的函数调用图和所述被测程序中每个函数的程序控制流图;
[0017]将所述被测程序的函数调用图转化成第一支配树,并将预设的每个所述目标基本块所在函数对应的控制流图转化成第二支配树;
[0018]根据所述第一支配树获取所述被测程序的主函数到所述目标基本块所在函数路径上的第一必要基本块,其中,获取的多个所述第一必要基本块构成第一序列;
[0019]根据所述第二支配树获取所述目标基本块所在函数的第一个基本块到所述目标基本块路径上的第二必要基本块,其中,获取的多个所述第二必要基本块构成第二序列;
[0020]取所述第一序列和所述第二序列的并集得到所述目标基本块对应的目标序列。
[0021]优选地,所述目标序列的优先级计算公式表示为:
[0022][0023]其中,N是所有目标基本块的数量,LCP表示两个序列的最长公共前缀,Max返回两个序列的最大长度,tgtSeq
i
和tgtSeq
j
分别表示第i个目标序列和第j个目标序列。
[0024]优选地,所述根据所述运行信息判断模糊测试主程序所处阶段,并根据所述模糊测试主程序所处阶段从相应的种子队列中提取测试种子的步骤包括:
[0025]如果所述运行信息中主程序阶段反馈值等于第一设定值,则说明所述模糊测试主程序处于探索阶段,从所述覆盖种子队列中提取测试种子;
[0026]如果所述运行信息中主程序阶段反馈值等于第二设定值,则说明所述模糊测试主程序处于利用阶段,从所述导向种子队列中提取测试种子。
[0027]优选地,所述根据所述运行信息判断模糊测试主程序所处阶段,并根据所述模糊测试主程序所处阶段从相应的种子队列中提取测试种子的步骤还包括:
[0028]如果所述模糊测试主程序处于探索阶段,且所述导向种子队列中导向种子数量与总种子数量的比值大于第一比例阈值,则所述模糊测试主程序从探索阶段切换到利用阶段;
[0029]如果所述模糊测试主程序处于利用阶段且在预设时间阈值内所述导向种子队列中导向种子数量保持不变,则所述模糊测试主程序从利用阶段切换到探索阶段,并自适应更新所述第一比例阈值。
[0030]优选地,所述运行信息包括分支覆盖信息和目标执行路径信息;
[0031]根据所述分支覆盖信息和目标执行路径信息计算得到所述测试输入的路径分支
覆盖度和目标序列覆盖度。
[0032]优选地,所述被测种子的分配能量计算公式表示为:
[0033]energy=afl_energy
×
10
×
(CF
×
(1.0

T)+0.5
×
T)
‑‑‑
(2)
[0034]其中,afl_energy表示AFL原始能量,CF表示种子多特征的综合能力,T表示模拟退火算法。
[0035]另一方面,本专利技术还提供了一种多目标导向模糊测试系统,包括:
[0036]序列增强模块,被配置为根据预设的多个目标基本块从被测程序中获取对应的多个目标序列,并计算所述多个目标序列的优先级,其中所述多个目标序列的优先级用以表征种子多特征的综合能力;
[0037]插装模块,被配置为在被测程序执行前,基于llvm对所述被测程序进行插桩操作以生成插桩的二进制程序,所述插桩的二进制程序在所述被测程序执行过程中实时获取所述被测程序的运行信息;
[0038]种子提取模块,被配置为根据所述运行信息判断模糊测试主程序所处阶段,并根据所述模糊测试主程序所处阶段从相应的种子队列中提取测试种子;输入生成模块,被配置为对所述测试种子进行变异处理并生成测试输入;
[0039]测试模块,被配置本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种多目标导向模糊测试方法,其特征在于,包括:根据预设的多个目标基本块从被测程序中获取对应的多个目标序列,并计算所述多个目标序列的优先级,其中所述多个目标序列的优先级用以表征种子多特征的综合能力;在被测程序执行前,基于llvm对所述被测程序进行插桩操作以生成插桩的二进制程序,所述插桩的二进制程序在所述被测程序执行过程中实时获取所述被测程序的运行信息;根据所述运行信息判断模糊测试主程序所处阶段,并根据所述模糊测试主程序所处阶段从相应的种子队列中提取测试种子;对所述测试种子进行变异处理并生成测试输入;将所述测试输入导入所述被测程序进行执行,并通过所述插桩的二进制程序获取所述被测程序测试过程中的运行信息;从所述被测程序测试过程中的运行信息中获取所述测试输入的路径分支覆盖度和目标序列覆盖度;如果所述路径分支覆盖度满足第一预设条件和/或所述目标序列覆盖度满足第二预设条件,则基于种子多特征的综合能力,模拟退火算法和AFL原始能量调度计算得到所述被测种子的分配能量;如果所述目标序列覆盖度满足第二预设条件,则将所述测试种子放入导向种子队列,否则将所述测试种子放入覆盖种子队列。2.根据权利要求1所述的多目标导向模糊测试方法,其特征在于,所述根据预设的多个目标基本块从被测程序中获取对应的多个目标序列的步骤包括:利用预先编写的图抽取工具对所述被测程序的代码进行处理以构建得到所述被测程序的函数调用图和所述被测程序中每个函数的程序控制流图;将所述被测程序的函数调用图转化成第一支配树,并将预设的每个所述目标基本块所在函数对应的控制流图转化成第二支配树;根据所述第一支配树获取所述被测程序的主函数到所述目标基本块所在函数路径上的第一必要基本块,其中,获取的多个所述第一必要基本块构成第一序列;根据所述第二支配树获取所述目标基本块所在函数的第一个基本块到所述目标基本块路径上的第二必要基本块,其中,获取的多个所述第二必要基本块构成第二序列;取所述第一序列和所述第二序列的并集得到所述目标基本块对应的目标序列。3.根据权利要求2所述的多目标导向模糊测试方法,其特征在于,所述目标序列的优先级计算公式表示为:其中,N是所有目标基本块的数量,LCP表示两个序列的最长公共前缀,Max返回两个序列的最大长度,tgtSeq
i
和tgtSeq
j
分别表示第i个目标序列和第j个目标序列。4.根据权利要求3所述的多目标导向模糊测试方法,其特征在于,所述根据所述运行信息判断模糊测试主程序所处阶段,并根据所述模糊测试主程序所处阶段从相应的种子队列中提取测试种子的步骤包括:如果所述运行信息中主程序阶段反馈值等于第一设定值,则说明所述模糊测试主程序
处于探索阶段,从所述覆盖种子队列中提取测试种子;如果所述运行信息中主程序阶段反馈值等于第二设定值,则说明所述模糊测试主程序处于利用阶段,从所述导向种子队列中提取测试种子。5.根据权利要求4所述的多目标导向模糊测试方法,其特征在于,所述根据所述运行信息判断模糊测试主程序所...

【专利技术属性】
技术研发人员:梁洪亮程翔林
申请(专利权)人:北京邮电大学
类型:发明
国别省市:

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

1