System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种基于滑动窗口置信上界算法的模糊测试种子变异方法技术_技高网

一种基于滑动窗口置信上界算法的模糊测试种子变异方法技术

技术编号:40561902 阅读:11 留言:0更新日期:2024-03-05 19:24
本发明专利技术公开了一种基于滑动窗口置信上界算法的模糊测试种子变异方法,方法包括:维护一个种子队列存放初始种子集;为预定义的变异算子维护滑动窗口用于保存最近部分历史奖励;根据霍夫丁不等式推导变异算子的置信上界;根据置信上界值选择最高的前四个变异算子,并指定变异位置;生成测试用例后输入到目标程序中执行,根据执行结果,并设置该轮反馈奖励;更新变异算子滑动窗口数据,进入下一轮变异。本发明专利技术将种子变异过程建模为多臂老虎机问题,使用滑动窗口置信上界算法优化变异过程,能及时感知到测试过程中变异算子的性能变化,实时选择对当前程序的最优变异算子,从而提高代码覆盖率和漏洞发现能力。

【技术实现步骤摘要】

本专利技术涉及软件安全领域,特别是一种基于滑动窗口置信上界算法的模糊测试种子变异方法


技术介绍

1、模糊测试技术是一种漏洞发现技术,通过将针对目标程序进行变异生成的测试用例文件输入到目标程序中,在目标程序中进行多轮执行来观察程序运行情况,以发现程序中潜藏的威胁和漏洞,近年来模糊测试已逐渐发展成为最热门有效的漏洞检测方法之一。

2、根据模糊测试器获取的程序信息,或者对目标程序内部代码的分析情况,现有的模糊测试方法大体有以下三类:黑盒模糊测试,灰盒模糊测试以及白盒模糊测试。黑盒模糊测试在运行时不依赖于程序的内部状态以及结构信息,采用完全随机性的方式来生成测试用例;白盒模糊测试会完全获取目标程序的代码信息,大多采用符号执行等方法,能够生成有针对性的测试用例;灰盒模糊测试由白盒模糊测试衍生而来,它通过相当有限的目标程序相关信息和精心设计的变异策略来获取良好的测试效果。三者相较而言黑盒执行快,计算和存储开销低,但生成输入过于盲目;白盒生成的测试用例质量很高,但执行较慢,计算和存储开销高;灰盒会就介于二者之间,通常能够兼顾良好的测试用例质量和执行速度。

3、其中以afl(american fuzzy lop)为代表的灰盒模糊测试,由于其简单易用且有效快速的特点,发现了大量的软件漏洞,成为了当下最流行的漏洞发现技术之一,被广泛应用于安全领域研究,本专利技术主要着眼于灰盒模糊测试。基于afl的灰盒模糊测试器的运行流程如下:它维护一个种子队列存储初始种子集,按初始顺序依次选取队首的种子作为输入,对输入进行变异生成测试用例输入目标程序中执行,并观察和记录执行结果。若覆盖了新路径或触发了新的唯一崩溃则将该测试用例加入到种子队列中。

4、种子变异主要包括确定性阶段和随机性阶段。确定性阶段顺序使用一些预定义的变异算子对种子进行变异,执行速度较慢,效率较低。非确定性阶段主要分为大破坏阶段和拼接阶段。大破坏阶段会通过对种子进行多次叠加变异来生成多个测试用例;拼接阶段则将随机选取两个种子进行剪切后拼接在一起生成新种子,再执行大破坏阶段。

5、由于大破坏阶段执行效率高且性能好,目前已有不少相关研究成果。另外在模糊测试的过程中随着覆盖率的提高以及触发的唯一崩溃数增加,不同变异算子的性能会发生变化,如一些变异幅度小的变异算子有效性会下降等,因此也有一些通过自适应变异算子选择进行优化的成果,如mingyuan wu等在随机变异阶段通过迭代先后选出最优变异强度和最优变异算子类型,进而提高代码覆盖率和崩溃发现能力;xiajingwang等将linucb算法引入到模糊测试当中,动态提取并编码文件特征,执行上下文感知的变异策略。

6、但这些成果也存在一定局限性,它们往往都采用全部的历史奖励信息去计算变异算子的置信上界值,来衡量其变异潜力,但历史奖励数据往往数量级很庞大,若一些原本置信上界值较高的变异算子有效性下降,则需要大量的无效反馈才能使其置信上界值有明显变化,因此采用这种方式很难及时察觉到变异算子有效性的变化,变异效果欠佳。


技术实现思路

1、本专利技术的目的在于解决现有技术中缺乏对变异算子变异的有效性应对方法。

2、实现本专利技术目的的技术解决方案为:

3、本申请提供一种基于滑动窗口置信上界算法的模糊测试种子变异方法,方法如下:

4、步骤1,建立并持续维护一个种子队列,将初始种子文件输入其中;

5、步骤2,为预定义的各项变异算子分别维护一个滑动窗口保存最新的固定量的历史反馈奖励,并为滑动窗口的数据设定初始值;

6、步骤3,进行种子变异:从种子队列中选择一个种子作为当前轮种子输入,并确定变异能量,即设置变异次数;对于给定的分配了变异次数的种子,在变异次数内,循环执行步骤4至步骤8;

7、步骤4,根据滑动窗口中历史反馈奖励和特定变异算子被选择的次数衡量算子的利用价值度量,根据目前模糊测试总变异次数和特定变异算子的执行次数计算算子的不确定性度量;

8、步骤5,根据霍夫丁不等式,综合利用价值度量和不确定性度量计算得到各个变异算子的置信上界;

9、步骤6,选择置信上界值最高的前四个变异算子,并分别指定种子输入随机字节位置,施加变异;

10、步骤7,生成测试用例后输入到目标程序中执行,根据执行结果是否有效设置各变异算子当前轮的反馈奖励,并更新各变异算子对应的滑动窗口数据,更新全局变异数据;

11、步骤8,若测试用例触发了唯一的程序崩溃,则将当前测试用例加入崩溃队列;否则若测试用例提高了代码覆盖率,则将其加入种子队列用于之后的变异;接着返回步骤4执行下一轮变异,直至该种子分配的变异次数耗尽。

12、步骤9,选定的种子分配的变异次数耗尽后,返回步骤3,选择新的种子进入下一轮变异,直到手动停止或者达到预设的执行轮数或时间阈值。

13、可选的,步骤1所述的种子队列包含fname,len,favored,exec_cksum,exec_us,depth在内的属性,分别代表文件名,长度,是否有趣,队列循环数,校验和,路径深度,用于存储初始种子和提高代码覆盖率的测试用例。

14、可选的,步骤2所述的变异算子是对种子文件的变异操作,如位翻转、数学运算、字节段替换或插入等等。

15、可选的,历史反馈奖励是之前生成的测试用例输入程序执行后得到的结果反馈,固定量可以设置定为默认值,也可以由用户根据具体程序的特征来自定义。

16、可选的,从种子队列中选择一个种子作为当前轮种子输入,并确定变异能量,包括:

17、根据种子队列中的输入排列,每轮模糊测试按照顺序取出队列中当前第一个种子作为当前轮的种子输入;

18、根据种子的文件大小、执行速度、变异深度以及路径覆盖情况为其确定变异能量值。

19、可选的,步骤4所述的变异算子的利用价值度量通过以下方法确定:

20、

21、其中nr是滑动窗口中历史反馈奖励总和,n是变异算子被选择次数。

22、可选的,步骤4所述的变异算子的不确定性度量通过以下方法确定:

23、

24、其中n是模糊测试总变异次数,n是变异算子被选择次数。

25、可选的,步骤5所述的变异算子的霍夫丁不等式是概率论中的概念,它给出了随机变量的和与其期望值偏差的概率上限,在本方法中随机变量即是指变异算子滑动窗口中的历史反馈奖励,根据它可推导出置信上界的计算公式如下:

26、

27、其中c是为了控制权重而引入的超参数。

28、可选的,步骤7所述的更新各变异算子对应滑动窗口数据是指将本轮执行的反馈奖励加入对应变异算子的滑动窗口最右端,并删去滑动窗口中左端最早的反馈奖励。

29、可选的,步骤7所述的更新全局变异数据是指该轮执行的变异算子的被选择次数和模糊测试总变异次数+1。

30、本专利技术与现有技术相比,其显本文档来自技高网...

【技术保护点】

1.一种基于滑动窗口置信上界算法的模糊测试种子变异方法,其特征在于,所述方法如下:

2.根据权利要求1所述的基于滑动窗口置信上界算法的模糊测试种子变异方法,其特征在于,

3.根据权利要求1所述的基于滑动窗口置信上界算法的模糊测试种子变异方法,其特征在于,步骤2所述的变异算子是对种子文件的变异操作,如位翻转、数学运算、字节段替换或插入等等。

4.根据权利要求1所述的基于滑动窗口置信上界算法的模糊测试种子变异方法,其特征在于,历史反馈奖励是之前生成的测试用例输入程序执行后得到的结果反馈,固定量可以设置定为默认值,也可以由用户根据具体程序的特征来自定义。

5.根据权利要求1所述的基于滑动窗口置信上界算法的模糊测试种子变异方法,其特征在于,从种子队列中选择一个种子作为当前轮种子输入,并确定变异能量,包括:

6.根据权利要求1所述的基于滑动窗口置信上界算法的模糊测试种子变异方法,其特征在于,步骤4所述的变异算子的利用价值度量通过以下方法确定:

7.根据权利要求1所述的基于滑动窗口置信上界算法的模糊测试种子变异方法,其特征在于,步骤4所述的变异算子的不确定性度量通过以下方法确定:

8.根据权利要求1所述的基于滑动窗口置信上界算法的模糊测试种子变异方法,其特征在于,步骤5所述的变异算子的霍夫丁不等式是概率论中的概念,它给出了随机变量的和与其期望值偏差的概率上限,在本方法中随机变量即是指变异算子滑动窗口中的历史反馈奖励,根据它可推导出置信上界的计算公式如下:

9.根据权利要求1所述的基于滑动窗口置信上界算法的模糊测试种子变异方法,其特征在于,步骤7所述的更新各变异算子对应滑动窗口数据是指将本轮执行的反馈奖励加入对应变异算子的滑动窗口最右端,并删去滑动窗口中左端最早的反馈奖励。

10.根据权利要求1所述的基于滑动窗口置信上界算法的模糊测试种子变异方法,其特征在于,步骤7所述的更新全局变异数据是指该轮执行的变异算子的被选择次数和模糊测试总变异次数+1。

...

【技术特征摘要】

1.一种基于滑动窗口置信上界算法的模糊测试种子变异方法,其特征在于,所述方法如下:

2.根据权利要求1所述的基于滑动窗口置信上界算法的模糊测试种子变异方法,其特征在于,

3.根据权利要求1所述的基于滑动窗口置信上界算法的模糊测试种子变异方法,其特征在于,步骤2所述的变异算子是对种子文件的变异操作,如位翻转、数学运算、字节段替换或插入等等。

4.根据权利要求1所述的基于滑动窗口置信上界算法的模糊测试种子变异方法,其特征在于,历史反馈奖励是之前生成的测试用例输入程序执行后得到的结果反馈,固定量可以设置定为默认值,也可以由用户根据具体程序的特征来自定义。

5.根据权利要求1所述的基于滑动窗口置信上界算法的模糊测试种子变异方法,其特征在于,从种子队列中选择一个种子作为当前轮种子输入,并确定变异能量,包括:

6.根据权利要求1所述的基于滑动窗口置信上界算法的模糊测试种子变异方法,其特征在于,步骤4所述的变异算子的利用价值度...

【专利技术属性】
技术研发人员:俞研沈家合狄芳朱宇喆苏铓
申请(专利权)人:南京理工大学
类型:发明
国别省市:

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

1