一种基于动态规划的AFL多线程优化方法及系统技术方案

技术编号:35210596 阅读:17 留言:0更新日期:2022-10-15 10:23
本发明专利技术涉及一种基于动态规划的AFL多线程优化方法及系统,属于信息安全技术领域。本发明专利技术基于动态规划算法来求解多条路径节点的最长公共子序列节点集合,继而找出干扰节点,利用该方法能够有效地排除冗余路径,显著提高了AFL多线程调度中种子的稳定性,有利于解决AFL应用在无目标源码的多线程应用程序的低效率问题,为智能化漏洞挖掘在多线程调度中的应用问题提供了新的解决方案和研究思路。问题提供了新的解决方案和研究思路。问题提供了新的解决方案和研究思路。

【技术实现步骤摘要】
一种基于动态规划的AFL多线程优化方法及系统


[0001]本专利技术属于信息安全
,具体涉及一种基于动态规划的AFL多线程优化方法及系统。

技术介绍

[0002]灰盒模糊测试技术由于具有轻量级检测、快速的覆盖反馈,以及动态调整策略的优势,目前已经在漏洞挖掘领域中发挥了重要作用。其中最有效的技术之一是以模糊测试工具AFL(American fuzzy lop)为代表的覆盖率引导的模糊测试,通过采用编译时插桩的方式,来获取程序运行时的覆盖信息,能够提高被测试代码的分支覆盖率,有助于发现新的漏洞。
[0003]尽管AFL具有上述优势,但是通常面向的是单线程问题,即假设种子是具有稳定性的,一条测试用例只会覆盖一条路径,将其直接应用于多线程问题中效率较低。然而在实际的工程应用中,有多线程并发调度的场景需求,由于多线程交错引起的并发错误对于模糊测试工具的稳定性造成了负面影响,所以如何提高AFL在处理多线程目标程序时的种子稳定性是需要思考的问题。目前有研究提出了修改程序源码的解决方式,通过确定程序指令的执行顺序,尽可能地将线程并发限制在了最低限度,但是该方法只针对已知目标程序源码的情形,然而在工程需求中,大部分情况下无法得知目标程序的源码,所以提高AFL在无目标程序源码的多线程问题中的种子稳定性成为了主要的研究目标。

技术实现思路

[0004](一)要解决的技术问题
[0005]本专利技术要解决的技术问题是:在无法获得目标程序源码的情形下,如何提高AFL在多线程调度中种子的稳定性,使得一条测试用例对应一条路径,从而解决无目标源码的多线程应用程序的调度问题。
[0006](二)技术方案
[0007]为了解决上述技术问题,本专利技术提供了一种基于动态规划的AFL多线程优化方法,包括以下步骤:
[0008]S1、对用户输入的测试用例进行预处理,并将预处理后的测试用例加入种子队列;
[0009]S2、基于所述种子队列,利用AFL变异算法得到新的测试用例;
[0010]S3、监测所述新的测试用例是否触发了新路径,如果触发了新路径,则继续步骤S4,如果没有,则返回步骤S2;
[0011]S4、判断生成的新路径是否唯一有效,如果唯一有效,则转入步骤S6,如果存在多条新路径,则继续步骤S5;
[0012]S5、排除冗余路径,获得有效路径;
[0013]S6、获得新的测试用例及其对应的有效路径,加入种子队列,得到了有效的测试用例集合;
[0014]S7、对测试用例及选择的有效路径进行测试,然后返回步骤S2进行下一轮新的变异,直到测试时间结束或者手动停止。
[0015]优选地,步骤S1具体为:对用户输入的测试用例进行分析和测试,判断该测试用例的有效性和稳定性,直到确保用户输入的测试用例能够触发有效的新路径,再将该测试用例加入种子队列。
[0016]优选地,步骤S1中,判断该测试用例有效性的方式为:通过编译时插桩的方式获取被测试程序的覆盖路径反馈,以判断该测试用例是否有效。
[0017]优选地,步骤S2具体为:从所述种子队列中取出优先级高的种子,利用AFL变异算法对该种子进行变异,得到由该种子生成的新的测试用例。
[0018]优选地,步骤S3具体为:对由该种子利用AFL变异算法生成的新的测试用例进行测试,监测是否触发了新的路径,如果触发了新路径,则说明该新的测试用例可能是有效的,则继续步骤S4,如果没有,则返回步骤S2继续生成下一个新的测试用例。
[0019]优选地,步骤S4具体为:当一个测试用例触发的新路径是唯一的,且能够有效地发现程序内部的执行状态,则说明该测试用例有效且稳定,可以加入种子队列,则转入步骤S6,如果触发的是多条新路径,则需要进一步判断是否存在由于多线程交错造成的冗余路径,因此转入步骤S5。
[0020]优选地,步骤S5具体为:
[0021]基于动态规划算法求解所有新路径节点的最长公共子序列节点集合;
[0022]取所有新路径节点集合与最长公共子序列节点集合的补集,获得干扰节点集合,即取不在最长公共子序列中的路径节点组成干扰节点集合;
[0023]从所有新路径中去除干扰节点,从而排除冗余的路径,获得有效的覆盖路径,即有效路径。
[0024]优选地,步骤S5中,所述基于动态规划算法求解出所有新路径节点的最长公共子序列节点集合,具体操作为:
[0025]用字符串表示每条路径节点组成的集合,则N条路径可以表示为X1、X2、

、X
N
,以求取路径X1和X2的最长公共子序列为例,设C[i,j]为路径X1和X2中前i,j个字符的最长公共子序列,则其求解公式为:
[0026][0027]X1[i]、X2[j]分别表示路径X1和X2中的第i、j个字符;
[0028]对于多条路径采用分治法进行求取,将所有路径划分为固定的份数,对每一份再继续划分,经过多次回溯,最终获得所有路径的最长公共子序列节点集合S。
[0029]优选地,步骤S5中,所述取不在最长公共子序列中的路径节点组成干扰节点集合,具体求解方法为:从路径节点集合X1、X2、

、X
N
中去除在最长公共子序列节点集合S中的节点,最终得到的节点集合即为干扰节点集合。
[0030]本专利技术还提供了一种用于实现所述方法的基于动态规划的AFL多线程优化系统,包括预处理模块、测试用例生成模块、路径监测模块、路径选择模块、测试模块;
[0031]所述预处理模块用于对用户提供的初始测试用例进行预处理,通过编译时插桩的
方式获取被测试程序的覆盖路径反馈,以判断该测试用例是否有效,如果有效则将该测试用例加入种子队列,如果无效,再由用户提供输入,直到获得有效的测试用例;
[0032]所述测试用例生成模块用于依靠种子变异生成来获得新的测试用例,其中,首先从种子队列中选择优先级高的种子作为AFL的输入,然后根据遗传算法对该种子进行变异生成新的测试用例。
[0033]所述路径监测模块用于监测新的测试用例是否能够触发新的路径,如果没有触发新路径,则返回到测试用例生成模块,继续生成下一测试用例,如果触发了新路径,则详细记录并保存触发的所有新路径;
[0034]所述路径选择模块用于当存在多条新路径时,从获取的路径中去除冗余路径,获得有效路径,其中,首先基于动态规划算法求解出所有路径的最长公共子序列节点,然后取不在最长公共子序列中的路径节点组成干扰节点集合,接着去除路径中的干扰节点,即可排除冗余的路径,选择剩余的路径作为有效的路径,然后将该测试用例及其对应的有效路径加入种子队列;
[0035]所述测试模块用于对测试用例及选择的有效路径进行测试。
[0036](三)有益效果
[0037]本专利技术提供的基于动态规划的AFL多线程优化方法及系统,基于动态规划算法来求解多条路径节点的最长公共子序列节点集合,继而找出干扰节点,本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于动态规划的AFL多线程优化方法,其特征在于,包括以下步骤:S1、对用户输入的测试用例进行预处理,并将预处理后的测试用例加入种子队列;S2、基于所述种子队列,利用AFL变异算法得到新的测试用例;S3、监测所述新的测试用例是否触发了新路径,如果触发了新路径,则继续步骤S4,如果没有,则返回步骤S2;S4、判断生成的新路径是否唯一有效,如果唯一有效,则转入步骤S6,如果存在多条新路径,则继续步骤S5;S5、排除冗余路径,获得有效路径;S6、获得新的测试用例及其对应的有效路径,加入种子队列,得到了有效的测试用例集合;S7、对测试用例及选择的有效路径进行测试,然后返回步骤S2进行下一轮新的变异,直到测试时间结束或者手动停止。2.如权利要求1所述的方法,其特征在于,步骤S1具体为:对用户输入的测试用例进行分析和测试,判断该测试用例的有效性和稳定性,直到确保用户输入的测试用例能够触发有效的新路径,再将该测试用例加入种子队列。3.如权利要求2所述的方法,其特征在于,步骤S1中,判断该测试用例有效性的方式为:通过编译时插桩的方式获取被测试程序的覆盖路径反馈,以判断该测试用例是否有效。4.如权利要求2所述的方法,其特征在于,步骤S2具体为:从所述种子队列中取出优先级高的种子,利用AFL变异算法对该种子进行变异,得到由该种子生成的新的测试用例。5.如权利要求4所述的方法,其特征在于,步骤S3具体为:对由该种子利用AFL变异算法生成的新的测试用例进行测试,监测是否触发了新的路径,如果触发了新路径,则说明该新的测试用例可能是有效的,则继续步骤S4,如果没有,则返回步骤S2继续生成下一个新的测试用例。6.如权利要求5所述的方法,其特征在于,步骤S4具体为:当一个测试用例触发的新路径是唯一的,且能够有效地发现程序内部的执行状态,则说明该测试用例有效且稳定,可以加入种子队列,则转入步骤S6,如果触发的是多条新路径,则需要进一步判断是否存在由于多线程交错造成的冗余路径,因此转入步骤S5。7.如权利要求6所述的方法,其特征在于,步骤S5具体为:基于动态规划算法求解所有新路径节点的最长公共子序列节点集合;取所有新路径节点集合与最长公共子序列节点集合的补集,获得干扰节点集合,即取不在最长公共子序列中的路径节点组成干扰节点集合;从所有新路径中去除干扰节点,从而排除冗余的路径,获得有效的覆盖路径,即有效...

【专利技术属性】
技术研发人员:汪美琴张卫国贾琼罗济凡
申请(专利权)人:北京计算机技术及应用研究所
类型:发明
国别省市:

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

1