一种模糊测试种子变异强度优化方法技术

技术编号:32676042 阅读:9 留言:0更新日期:2022-03-17 11:32
本发明专利技术公开了一种模糊测试种子变异强度优化方法。本发明专利技术先选择一个最优的变异强度;接着对种子执行所选择变异强度次数的变异;最后将变异种子后得到的内容作为输入提供给程序做一次模糊测试;测试完成后这些内容将废弃,重新在该种子基础上生成下一个输入;这里变异强度指的是生成新输入时对种子的叠加变异次数。本申请提出将多种变异强度的选择建模为强化学习中多臂赌博机的手臂的选择,从而利用现有的多臂赌博机算法来选取任意时刻的最优的变异强度,实现更高的模糊测试效率。实现更高的模糊测试效率。实现更高的模糊测试效率。

【技术实现步骤摘要】
一种模糊测试种子变异强度优化方法


[0001]本申请涉及软件安全领域,尤其涉及一种对软件进行更高效模糊测试的方法。

技术介绍

[0002]模糊测试是目前流行的软件漏洞发现方法,其可以大致分为三类:黑盒模糊测试、灰盒模糊测试、和白盒模糊测试。其中,黑盒测试基本不对被测程序进行了解,而是随机地产生输入进行测试。灰盒测试会对被测试程序进行插桩来获取一些运行时信息,如AFL(American Fuzzy Lop)会通过对插桩了解代码覆盖,并通过当前输入的执行反馈调整下一步输入。白盒测试会获取程序代码的更多相关信息来针对性地产生输入,如通过符号执行、污点追踪来指导产生输入。这三类方法亦各有所长:黑盒模糊测试虽然单次测试执行速度快,但是输入的质量一般不高;白盒模糊测试的输入质量很好,但是其执行速度较慢;灰盒模糊测试介于黑盒和白盒之间,其输入质量较好,也有较好的执行速度。
[0003]这三类模糊测试方法中,以AFL为代表的灰盒模糊测试,因为其在发现软件漏洞上的极高效率,成为了目前十分流行的模糊测试技术,在工业界和学术界都产生了较大影响。本申请主要关注的即是灰盒模糊测试,同时所提出方法也能应用在结合了灰盒和白盒模糊测试混合(Hybrid)模糊测试系统中(如Driller、QSYM)。
[0004]AFL类的灰盒模糊测试的测试过程大概如下。它将所有种子维护在一个队列中,从头到尾遍历该队列选取种子进行模糊测试。每选取一个种子后,将对它进行变异来获得新输入,并将新输入提供给被测试程序看是否会造成崩溃(Crash)。如果找到一个崩溃则意味着发现一个软件Bug。如果没有崩溃但是发现了新的代码覆盖(Code Coverage),如新的边覆盖(Edge Coverage)或称新路径(Path),则会将该输入保存为新种子。因为AFL这类模糊测试方法以代码覆盖制导,所以也常被称为覆盖制导模糊测试(Coverage

guided Fuzzing,CGF)或基于覆盖的模糊测试。
[0005]从上段介绍中可以看出,如何对种子进行变异是很关键的一个问题。目前对种子的变异包括确定性(Deterministic)阶段和非确定性(Non

deterministic)阶段。确定性阶段是可以选择跳过的,它主要是用一系列确定的变异操作来改动种子作为新输入(如逐个反转比特),过程会比较耗时。而非确定性阶段目前分为两个子阶段,一是大破坏(Havoc)阶段,一个是绞接(Splice)阶段。其中大破坏阶段会生成多个新输入,每个新输入都是通过对该种子进行2
r
次叠加变异来生成的(r是在1至7中随机选择的整数,包括1和7)。我们称叠加变异次数为变异强度(Mutation Intensity)。而绞接阶段则是先将该种子与一个随机选择的其它种子在中间随机位置进行拼接生成一个新种子后,再执行大破坏阶段。
[0006]目前AFL类灰盒模糊测试系统(包括libFuzzer)中,每次生成输入选择的变异强度都是在一个离散强度列表中随机、均匀地选择的(如前面提到的2
r
,r为1至7),这使得选择的变异强度并不一定是其最优的变异强度。实际上,(1)不同的变异强度下,发现新路径的效率可能并不一样,(2)不同类的种子,其变异强度与发现新路径效率的对应关系也可能不一样,(3)在不同时刻,变异强度与发现新路径的效率可能不一样,即变异强度的对应模糊
测试效率可能会随着时间变化。本申请首次提出变异强度优化问题,并提出相应的优化方法。
[0007]值得一提的是,我们这里提出的变异强度与黑盒模糊测试中使用的变异比率(Mutation Ratio)是不同的。变异比率也有一些别称如在zzuf中的模糊测试比率(Fuzzing Ratio),并且有一论文对其进行研究(如[Woo等,CCS

13],SYMFuzz[Cha等,SP

15]。变异比率定义为d/|s|,其中d是模糊测试期间变异的位数,|s|是种子输入s的位长。变异比率有几个缺点使得它难以应用在CGF灰盒模糊测试中。首先,变异比率直接用种子的长度属性定义,这不适用于会不断获取新种子的CGF模糊器。例如,CGF模糊器使用删除/插入字节,以及拼接两个种子等来生成新种子,这可能会彻底改变初始种子的长度。其次是变异比率很难实现保证,因为现代CGF模糊器(如AFL,libFuzzer,AFL++)包含诸如拼接和自定义变异之类的变异操作。相比之下,变异强度定义为对种子进行的变异操作的次数,这与长度属性无关,也可以很容易地映射到现代CGF模糊测试系统中。

技术实现思路

[0008]本专利技术提供一种针对模糊测试时种子的变异强度进行优化的方法,将变异强度的选择建模为强化学习中多臂赌博机(Multi

Armed Bandit,MAB)的手臂的选择,从而利用现有的多臂赌博机算法来选取任意时刻的最优的变异强度。
[0009]具体来说,本专利技术采用的技术方案如下。步骤一,选择一个最优的变异强度;
[0010]步骤二,对种子执行所选择变异强度次数的变异;
[0011]步骤三:将变异种子后得到的内容作为输入提供给程序做一次模糊测试;测试完成后这些内容将废弃,重新在该种子基础上生成下一个输入;
[0012]所述的选择一个最优的变异强度,具体方法为:
[0013]步骤

:判断是否之前已经为该种子选择了最优变异强度,并且所选择的变异强度还有效,如果有效则直接返回该变异强度;
[0014]步骤

:判断是否是之前已经选择过最优变异强度且已经失效的情况,如果是,则需要将这期间的收益进行计算后,更新到多臂赌博机对应的数据结构中;
[0015]步骤

:如果之前尚未选择过变异强度或者已经失效,均需要选择种子对应的多臂赌博机并运行其多臂赌博机算法来选择最优变异强度。
[0016]作为优选,所的收益则是在生成给定数量输入或者执行给定时间的模糊测试后,根据新发现的代码覆盖、唯一崩溃数目、唯一漏洞数目进行计算;其中的代码覆盖是边覆盖、行覆盖、分支覆盖、路径覆盖。
[0017]作为优选,所述的变异强度为为2
r
,1≤r≤7,且r为整数,且不是在这些离散值中随机、均匀地进行选择。
[0018]作为优选,所述的的多臂赌博机是假设收益会变化、但仍具有随机性的非静态多臂赌博机,假设收益会变化、且不具有随机性的对抗式多臂赌博机,经典的假设收益不变而仅具备随机性的多臂赌博机中的一种。
[0019]作为优选,所述的将变异种子后得到的内容作为输入提供给程序做一次模糊测试后,模糊测试效率的计算依据新发现的代码覆盖、崩溃数目、漏洞数目进行。
[0020]作为优选,所述的非静态多臂赌博机为Discounted UCB或者Sliding

Window UCB
算法。
[0021]本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种模糊测试种子变异强度优化方法,其特征在于,该方法具体如下:步骤一,选择一个最优的变异强度;步骤二,对种子执行所选择变异强度次数的变异;步骤三:将变异种子后得到的内容作为输入提供给程序做一次模糊测试;测试完成后这些内容将废弃,重新在该种子基础上生成下一个输入;所述的选择一个最优的变异强度,具体方法为:步骤

:判断是否之前已经为该种子选择了最优变异强度,并且所选择的变异强度还有效,如果有效则直接返回该变异强度;步骤

:判断是否是之前已经选择过最优变异强度且已经失效的情况,如果是,则需要将这期间的收益进行计算后,更新到多臂赌博机对应的数据结构中;步骤

:如果之前尚未选择过变异强度或者已经失效,均需要选择种子对应的多臂赌博机并运行其多臂赌博机算法来选择最优变异强度。2.根据权利要求1所述的一种模糊测试种子变异强度优化方法,其特征在于:所的收益则是在生成给定数量输入或者执行给定时间的模糊测试后,根据新发现的代码覆盖、唯一崩溃数目、唯一漏洞数目进行计算;其中的代码覆盖是边覆盖、行覆盖或路径覆盖。3.根据权利要求1所述的一种模糊测试种子变异强度优化方...

【专利技术属性】
技术研发人员:曾英佩吴铤申延昭郑秋华
申请(专利权)人:杭州电子科技大学
类型:发明
国别省市:

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

1