Mopt: Optimized Mutation Scheduling For Fuzzers(2019)

目录

摘要:

背景知识:

1.模糊测试的工作流程包括:

2.突变调度器

3. 变异操作符:

4.从前的突变调度器的局限性

4.模糊器AFL的突变调度选择:

PSO粒子群优化算法:

MOPT主框架:

PSO初 始 化 模 块:

Pilot Fuzzing Module:目标是找到效率最高的群

核 心 Fuzzing模 块

PSO更 新 模 块

Pacemaker Fuzzing Mode:加速PSO的收敛速度


摘要:

近年来已经提出了许多新解决方案,包括改进种子生成 ,改进种子选择策略 ,改进测试速度和代码覆盖 ,以及将其他技术集成到模糊测试中。
然而,较少关注如何突变测试用例以生成新的有效测试用例。

1.提出突变调度策略MOPT,以改进传统的Mutation-based fuzzing 通常遵循特定的分布来选择变异操作符,在寻找通用程序的漏洞时效率不高的现状。

2.mopt寻找操作符最佳概率分布的原理:MOPT使用定制的粒子群优化算法(PSO)来寻找与模糊效果相关的操作符的最佳选择概率分布,并提供一个节拍器模糊模式来加速PSO的收敛速度。

3.作者将MOPT应用到最先进的模糊器AFL、AFLFast和VUzzer上,分别实现了MOPT-AFL、MOPT-AFLFast和MOPT-VUzzer,并在13个真实世界的开源程序上进行了评估。广泛的评估还表明,MOPT在合理性、兼容性和稳定性方面表现良好,同时引入的代价可以忽略不计。

背景知识:

1.模糊测试的工作流程包括:

维护一个测试用例队列,从队列中选择测试用例,对这些测试用例进行变异,使用新产生的测试用例测试目标程序,并根据需要报告漏洞或更新种子队列,本文主要关注变异阶段

2.突变调度器

在模糊测试过程中,它们使用某些突变调度器从预定义的操作符集合中选择操作符,以突变测试用例并生成新的用于模糊测试的测试用例。
 突变调度器不是直接产生一个突变操作符,而是产生预定义操作符的概率分布,模糊器将遵循这个分布选择操作符。

3. 变异操作符:

定义了在哪里进行变异(如哪些字节)和如何进行变异(如添加、删除或替换字节)。

4.从前的突变调度器的局限性

它们没有考虑到:

(1) 不同操作符的效率存在差异:不同的突变操作符在找到崩溃和路径方面具有不同的效率。

使用均匀分布选择突变操作符的模糊器可能会在不高效的操作符上浪费不必要的计算资源

(2) 操作符的效率与目标程序有关:每个操作符的效率都是程序依赖的,并且很难或至少难以静态推断这种依赖关系。但是最优的突变调度器必须根据每个操作符在目标程序上的运行时效率做出决策。

(3)操作符的效率随时间变化:在当前测试用例上表现良好的操作符在极端情况下可能在接下来的测试用例上表现较差。最优的突变调度器依赖于操作符的历史效率来计算选择操作符的最佳概率分布。

4.模糊器AFL的突变调度选择:

(1)AFL采用了三种不同的调度方案,分别在确定性阶段、混沌阶段和拼接阶段使用,以不同的方式选择和变异测试用例,以适应不同阶段的模糊测试需求。

(2)确定性阶段调度器:用于首次选择的种子测试用例,使用6种确定性变异操作符依次处理。

(3)混沌阶段调度器:是AFL的主要变异调度方案,它首先决定在这个阶段生成的新测试用例的数量,然后随机选择一系列变异操作符生成新的测试用例。

(4)拼接阶段调度器:在某些情况下,经过前两个阶段对所有种子处理后,未能发现任何独特的崩溃或路径时使用。这个阶段只使用一个操作符交叉来生成新的测试用例,然后这些新的测试用例会送入混沌阶段调度器,而不是直接测试程序,以生成新的测试用例。

(5)第一阶段的调度器是确定性的且较慢,而最后一个阶段的调度器很少使用。混沌阶段的调度器更为通用,已被许多模糊测试器广泛采用。

PSO粒子群优化算法:

MOPT对 每 个 算 子 使 用 一 个 粒 子 , 并 尝 试 在 预 定 义的 概 率 空 间 [xm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值