论文英文标题为:FairFuzz: A Targeted Mutation Strategy for Increasing Greybox Fuzz Testing Coverage
在看论文时,简单每个记录了一些重要的点,方便阅读和回顾。如果需要详细了解论文内容,可看论文原文。
摘要
AFL的局限,覆盖率低。而覆盖率低,会导致有些没有被覆盖代码的bug不会被发现。
本文提出2个方法来提高覆盖率。
- 路径识别,识别那些被较少执行的分支路径(稀缺分支);
- 提出了一个变异掩码生成的算法,使得变异能更倾向于稀缺分支方向。
这个掩码在fuzz过程中动态的生成,能够适应各种目标文件。
结果:24小时覆盖率相比AFL提高10.6%
1. 介绍
crash探测的基本假设是,提高代码覆盖率往往能更好的发现crash。
Fairfuzz的两个重要步骤:
-
识别稀缺分支,即那些之前生成的input中,较少覆盖到的分支(注意是较少覆盖,说明已经覆盖过,但是覆盖次数少)。生成更多的input来命中这些稀缺分支,以探索被其覆盖到的代码空间。
-
fairfuzz使用了一种奇异的轻量级的变异技术来增加命中这些稀缺分支的可能性。变异策略是基于一部分input能命中稀缺分支的原因是它们满足了命中这个分支的必要条件。因此,input中满足条件的变异内容不应该再被变异掉。
fairfuzz通过一些小的变异测试,识别这些重要的变异内容。然后在接下去的变异中,避免变异