Mopt: Optimized Mutation Scheduling For Fuzzers(2019)

2024-02-15 00:44

本文主要是介绍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对 每 个 算 子 使 用 一 个 粒 子 , 并 尝 试 在 预 定 义的 概 率 空 间 [xmin,xmax]中 探 索 每 个 算 子 的 最 优 位 置 , 其中 0 < xmin < xmax≤ 1。

xnow:一 个 粒 子 (即 算 子 )在 概 率 空 间 中 的 当 前 位 置  ,表 示 该 算 子 将 被 调 度 程 序 选 择 的 概 率 。

MOPT采 用多 个 蜂 群「与 原 始 的 PSO有 多 个 粒 子 探 索 解 空 间 不 同 ,MOPT定 义 的 群 体 实 际 上 只 在 解 空 间 中 探 索 一 个 候 选 解 (即 概 率 分 布 ), 因 此 可 能 陷 入 局 部 最 优 。 为 了 避 免 局 部 最 优 , MOPT 采 用 了 多 个 群 体 , 并 对 每 个 群 体 使 用 定 制 的 PSO算 法。」在 模 糊 测 试 期 间 , 在 PSO的 每 次 迭 代 中 执 行 以 下 三 个 额 外 的 任 务 。

T1:定 位 每 个 群 中 所 有 粒 子 的 局 部 最 佳 位 置 。 在 每 个 蜂 群 中 ,在 模 糊 过 程 中 评 估 一 次 迭 代 中 每 个 粒 子 的 局 部 效 率 effnow。 对 于 每 个 粒 子 ,将 历 史 上 效率 effbest最 高 的 位 置 标 记 为 其 局 部 最 佳 位 置 Lbest。

T2:定 位 整 个 群 中 所 有 粒 子 的 全 局 最 佳 位 置 。 每 个

粒 子 的 全 局 效 率 global eff 跨 群 评 估 。 然 后 评 估 粒 子 的 全 局 效 率 分 布 。 将 每 个 粒 子 的 global ef在 该 分 布 中 的 比 例 用 作 其 全 局 最 佳 位 置 Gbest。

T3:选 择 最 佳 蜂 群 来 引 导 模 糊 测 试 。 评 估 每 个 群 体 在 一 次 迭 代 中 的 效 率 swarmeff将 群 体 的 效 率 (swarme ff)定 义 为 该 群 体 贡 献 的 有 趣 测 试 用 例 的 数 量 除 以 一 次 迭 代 期 间 新测 试 用 例 的 数 量 。)

选 择 swarmeff最 高 的 群 体 ,并 将 其 在 当 前 迭 代 中 的 概 率 分 布 应 用 于 进 一 步 的 模 糊 化 。然 后 , 在 每 次 迭 代 结 束 时 , MOPT以 与 PSO相 似 的

方 式 移 动 每 个 群 体 中 的 粒 子 。 更 具 体 地 说 , 对 于 一 个 粒 子 Pj在 一 个 群 Si 中 我 们 更 新 它 的 位 置 如 下 。

MOPT主框架:

MOPT由四个核心模块组成 ,PSO 初始化更新模块先导模糊核心模糊模块 。


初 始 化 模 块 执 行 一 次 , 用 于 设 置 PSO算 法 的 初 始 参 数 。 其 他 三 个 模 块 形 成 一 个 迭 代 循 环 , 共 同 工 作 ,连 续 模 糊 目 标 程 序 。


PSO初 始 化 模 块:

MOPT

(1)将 每 个 群 中 每 个 粒 子 的 初 始 位 置 xnow设 为 随 机 值 , 并 将 一 个 群 中 所 有 粒 子 的 和 xnow 归 一 化 为 1;

(2)将 每一 群 中 每 个 粒 子 的 粒 子 运 动 位 移 vnow设 为 0.1;

(3)将 每 个 群 中 每 个 粒 子 的 初 始 低 效 率 effnow设 为 0;

(4)将 每 个 群 中 每 个 粒 子 的 初 始 局 部 最 佳 位 置 Lbest设 为 0.5;

(5)将 每 个 粒 子 跨 群 的 初 始 全 局 最 佳 位 置 Gbest设 为 0.5。

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

该 模 块 采 用 多 个 蜂 群 来 执 行 模 糊 测 试 , 其 中 每 个 蜂 群 探 索 不 同 的 概 率 分 布 。 该 模 块 按 顺 序 评 估 每 个 群 体 ,

并 在 它 生 成 一 个 可 配 置 的 数 量 (表 示 为 periodpilot )的 新 测 试 用 例 后 停 止 测 试 群 体 。 对 特 定 群 体 进 行 模 糊 测 试 的 过 程

如 下 。

在 模 糊 化 过 程 中 , 该 模 块 将 测 量 三 个 测 量 值 :

(1)由 特 定 粒 子 (即 算 子 )贡 献 的 有趣 测 试 用 例 的 数 量 , 

(2)特 定 粒 子 的 调 用 次 数 , 

(3)通 过 仪 器 化 目 标 程 序 , 该 群 发 现 的 有 趣 测 试 用 例 的 数 量 。

每 个 粒 子 (在 当 前 群 中 )的 局 部 效 率 是 第 一 次 测 量 除 以第 二 次 测 量 。 我 们 可 以 定 位 每 个 粒 子 的 局 部 最 佳 位 置 。 

当 前 群 的 效 率 是 第 三 次 测 量 除 以 测 试 用 例 计 数 periodpilot 因 此 , 我 们 可 以 找 到 效 率 最 高 的 群 体 。

核 心 Fuzzing模 块

该 模 块 将 采 用 上一个 Pilot Fuzzing Module选 择 的 最 佳 群 , 并

利 用 其 概 率 分 布 进 行 模 糊 测 试 。 它 将 在 生 成 一 个 可 配 置 的 数 量 (表 示 为 periodcore )的 新 测 试 用 例 )后 停 止 。

一 旦 它 停 止 , 我 们 可 以 测 量 从 PSO初 始 化 开 始 到 现 在 ,每 个 粒 子 所 贡 献 的 感 兴 趣 的 测 试 用 例 的 数 量 , 而 不 管 它 属 于 哪 个 群 。 然 后 我 们 可 以 计 算 粒 子 之 间 的 分 布 , 并 定 位 每 个 粒 子 的 全 局 最 佳 位 置 。

PSO更 新 模 块

根 据 飞 行 员 和 核 心 模 糊 模 块 提 供 的 信 息 (得到的局部和全局效率), 该 模 块 根

据 公 式 3和 4更 新 每 个 群 体 中 的 粒 子 。

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

MOPT应 用 于 基 于 突 变 的 模 糊 器 是 通 用 的 , 并且 我 们 意 识 到 MOPT的 性 能 可 以 在 应 用 于 特 定 的 模 糊 器 (如AFL)时 进 一 步 优 化 

在前面“模糊器AFL的突变调度选择”里面提到

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

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

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

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

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

因 此 , MOPT为 基 于 AFL 的模 糊 测 试 器 提 供 了 一 种 优 化 , 即 起 搏 器 模 糊 测 试 模 式(Pacemaker Fuzzing Mode) ,可 以 选 择 性 地 避 免 耗 时 的 确 定 性 阶 段

 

这篇关于Mopt: Optimized Mutation Scheduling For Fuzzers(2019)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/710018

相关文章

BUUCTF靶场[web][极客大挑战 2019]Http、[HCTF 2018]admin

目录   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 [web][HCTF 2018]admin 考点:弱密码字典爆破 四种方法:   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 访问环境 老规矩,我们先查看源代码

2019学习计划

工作三年了,第一年感觉是荒废的,第二年开始学习python,第三年开始自动化 感觉自己会的东西比较少,而且不够深入,流于表面 现制定一下今年大概的学习计划 需持续巩固加强:python、ui自动化、接口自动化、sql等 代码量需提升,敲的不够(重点) 学习: 1.移动端测试,appium等 2.前端知识系统整理学习  3.性能测试 4.docker入门,环境搭建 5.shell

最简单的使用JDBC[连接数据库] mysql 2019年3月18日

最极简版本的, 我们这里以mysql为例: 首先要创建maven工程, 需要引入jar包:,这里需要注意, 如果你安装的是mysql最新版本8以上的, 下面有些地方需要更改,具体就是mysql连接的url, 和5版本的不一样,具体解决请自行百度哈.这里只演示mysql5版本的? 依赖: <dependency>   <groupId>mysql</groupId>   <artifactId

(php伪随机数生成)[GWCTF 2019]枯燥的抽奖

审核源码发现加载check.php,审计发现使用了mt_rand()函数,这个函数生成的值是伪随机的 参考下面这篇文章 PHP mt_rand安全杂谈及应用场景详解 - FreeBuf网络安全行业门户 kali里面输入下载工具 git clone https://github.com/openwall/php_mt_seed.git cd进去输入make后编译出的文件先

2019年2月17日

今天又重新看了一下输出第1500个丑数 在我错了八次之后发现要输出一个句号还要输出换行 接下来的两天应该进入复习阶段了。

National Contest for Private Universities (NCPU), 2019 E. Generalized Pascal's Triangle

编辑代码 2000ms 262144K Generalized Pascal's Triangle Pascal's triangle is a triangular array in which each number can be calculated by the sum of the two numbers directly above that number as shown i

Hinton等人最新研究:大幅提升模型准确率,标签平滑技术 2019-7-8

导读:损失函数对神经网络的训练有显著影响,也有很多学者人一直在探讨并寻找可以和损失函数一样使模型效果更好的函数。后来,Szegedy 等学者提出了标签平滑方法,该方法通过计算数据集中 hard target 的加权平均以及平均分布来计算交叉熵,有效提升了模型的准确率。近日,Hinton 团队等人在新研究论文《When Does Label Smoothing Help?》中,就尝试对标签平滑技术对

Photoshop CC 2019圆形的抠图

快速进入矩形选区 快速在矩形和圆形选区之前切换: shift+M 选择的时候,按住shift,可以选中正方形/圆形   以中心点画圆: alt + 拖拽 再利用变换选区功能即可实现圆的选中 效果如图所示: 再使用自由变换,即可放大,缩小球的大小: ctrl + T 阴影部分的处理: 1)去其他球那里选择个椭圆形选区 2)选择编辑-填充 3)使用滤镜里

Windows Server 2019 中文版、英文版下载 (updated Aug 2024)

Windows Server 2019 中文版、英文版下载 (updated Aug 2024) Windows Server 2019 Version 1809 请访问原文链接:https://sysin.org/blog/windows-server-2019/,查看最新版。原创作品,转载请保留出处。 本站将不定期发布官方原版风格月度更新 ISO。 Windows Server