1. 引入
最早期的模糊测试(fuzz),是生成一些随机的文本序列,对unix系统的命令行输入进行测试。这种古老的方式,也发现了不少漏洞。
但完全随机的fuzz,存在如下问题:
(1)大部分随机文本难以通过语法检查,也就没法正确运行
(2)这种方式只能覆盖一小部分代码,coverage低。
因此,产生的基于变异策略的模糊测试方法。
2. seed与mutation
基于变异策略的模糊测试,有两个重点:
(1)seed:种子,初始的合法输入序列。
(2)mutation:对已经存在的输入序列,进行微调。
3. 样例
假设我们要fuzz一个URL的解析库,则
(1)seed(种子)
- http://www.google.com/search?q=fuzzing
注意种子是一个合法的输入。
(2)经过mutation后的输入
- http://www.g=oNogl.om/search?q=fuzzing/
- httpX://w)ww.goo(gle.comq/sarc(q=fuzzng
- hdt8p://"wWw.goole.com/seDarb`*?q=fuzzing
- hup://www.google.comC/search?q=fuzzing
注意mutation只做微调。
4. 参考
http://sigsoft.or.kr/wp-content/uploads/2021/01/20210324_005245.pdf