😱
FairFuzz: A Targeted Mutation Strategy for Increasing Greybox Fuzz Testing Coverage
作者
- Caroline Lemieux - 加利福尼亚大学 - 机器学习、模糊测试
- Koushik Sen - 加利福尼亚大学 - 模糊测试、机器学习、LLM、智能合约模糊测试
作者思路
FairFuzz主要针对传统模糊测试中无目的随机变异的问题提出了两个解决方法
- 识别在模糊测试过程中很少命中的程序分支的种子,而后提高其优先级使得Fuzzer更多的倾向于没有充分覆盖的分支
- 通过针对命中稀有分支的种子进行变异测试,确定覆盖对应分支的关键字节并生成掩码以保证关键字节不被变异
方法论
Mutation Mask
Definition 1. 定义Mutation为一个元组(c,m),其中m为突变所影响的字节数,c为突变类型
- O: 使用一些值覆写从k字节开始的m个字节的内容
- I: 在k字节处插入m字节的内容
- D: 在k字节处删除m字节的内容
Definition 2. 定义突变掩码是一个输入x和测试目标T的函数 maskx,T:N→P({O,I,D})。对于任意输入x的一个位置i输入到函数中,其将返回一个变异策略O,I,D的子集,如果其满足(mutate(x,(c,1),i),T)为真,我们则认为c∈maskx,T(i)为真;也就是说如果c在集合maskx,T(i)中,那么在x的第i个位置应用突变c后,得到的输入将满足目标T
具体来说,算法如下
针对于最关心的掩码生成部分,算法很简单粗暴,直接针对每个字节变异一遍计算掩码即可