NDSS 2022 EMS: History-Driven Mutation for Coverage-based Fuzzing

作者:
在这里插入图片描述
历史paper:Chenyang Lyu, Shouling Ji, Chao Zhang, Yuwei Li, Wei-Han Lee,
Yu Song, Reheem Beyah (2019). MOPT:Optimized mutation scheduling for fuzzers. USENIX Security 2019

背景

•变异过程中的高度随机性导致对触发唯一路径或崩溃的测试用例的有限探索,从而导致发现漏洞的低效率。
•虽然现有的模糊器很好地探索了触发唯一路径和崩溃的测试用例,但是它们缺乏对模糊历史的细粒度重用来构造这些测试用例。

在这里插入图片描述

动机:

•1)CMP使用的大多数直接操作数在一个程序中都是重复的;
•2)不同的程序具有相同的直接操作数,这是所有操作数中的大多数。因此,当前路径约束中的直接操作数可能与其他约束中的操作数是相同的,这些操作数可能在试验内和试验间解决。
重用实践:即相同/相似的程序逻辑(通常被包装在函数和库中)在单个程序中或跨不同程序重复使用。
在这里插入图片描述
来自同一厂商的三个程序中触发的共享基本块和唯一基本块的数量
•试验内和试验间的模糊化历史包含丰富的关键突变策略的知识,导致发现独特的路径和崩溃。这些变异策略隐含地携带部分路径约束解,并可用于加速共享相似部分路径约束的新路径和崩溃的发现。

挑战:

如何从试验内和试验间历史中捕获触发独特路径和崩溃的突变策略。

核心思想:

利用提出的概率字节定向模式(PBOM)作为附加的变异操作符,来分别从试验间和试验内历史中学习有效的突变策略,根据输入字节值和长度从概率上提供所需的变异字节值和变异类型。然后,调用PBOM来重用高效突变策略。
具体来说,我们首先将所有变异操作符分为三种类型:覆盖、删除和插入。对于用于变异一个测试用例的每个操作符,我们临时记录输入字节值、字节长度、变异类型和相应的变异字节值。如果变异的测试用例触发了新的唯一路径或崩溃,我们将记录的数据存储到训练集中。然后,我们利用训练集中存储的数据来构建PBOM。本质上,PBOM使用散列映射将输入字节值映射到相应的高效变异策略。每个突变策略包含突变类型、突变的字节值、这种突变的频率和这种突变的选择概率。注意,突变的选择概率是根据它在历史上的频率计算的。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
1)在模糊化开始时:EMS使用PBOM间初始化来构建PBOM间,并为每个唯一的in更新选择概率分布,这是整个模糊化过程中唯一的PBOM间更新。
2)在模糊化过程中:如图5所示,EMS分两个阶段调用PBOM算子。在每个变异测试用例的生成中,它不断地调用操作符分析和数据收集。PBOM内部更新将在工作流中定期调用。

评估

我们将EMS与最先进的模糊器(包括AFL、QSYM、MOPT、MOPT-dict、EcoFuzz和AFL++)在9个真实世界的程序上进行评估。结果显示,EMS发现的独特漏洞比基线多4.91倍,并且在大多数程序中比其他模糊器发现更多的线路覆盖。我们向供应商报告了所有发现的新漏洞,并将在GitHub上开放EMS的原型源代码。
在这里插入图片描述

不足及未来方向

•变异算子开发:EMS利用触发唯一路径和崩溃的有效变异策略来更新作为变异算子的PBOM。此外,可以对有效的变异策略进行分类,以构造不同的细粒度变异算子。
•突变位置选择:突变位置也可以由模糊历史来引导。
•机器学习的应用:机器学习算法不适合用作变异算子,因为它们会被频繁调用,从而降低执行速度。相反,对于具有高执行测试用例延迟的目标程序,例如模糊服务,机器学习算法可能因为其高拟合能力而更有潜力。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值