2023-11-9讨论班
fitness function: 评估测试用例的函数,要不要留下这个种子?
白盒,黑盒,灰盒(观察测试用例的执行,指导下一个,例如通过coverage作为fitness function指导下一次测试用例)
污点流分析
对于黑盒测试来说,可以自定义Coverage空间,用来补充说明自己的实验
- 但是由于缺少语义,黑盒比较难测出bug
白盒+guidance
输入:基于生成/基于突变
符号执行
预处理:对种子的 优化/选择/修剪/重组
基于模型的生成:根据一些预定义的模型来生成输入
基于推断的生成:根据学习已有的测试数据,生成新的测试数据(可能有依赖问题,需要结合静态/动态的方法)
生成器生成:要测decoder程序(例如pdf解析器),可以取对应的encoder程序(例如pdf生成器),通过轻微改动生成器来获得能触发decoder bug的case【很奇怪……】
内存快照,提高fuzz效率,AFL也有持久模式的
要根据程序性质来指导fuzz,可以结合静态/动态……方法
IR根据抽象程度的不同分为HIR, MIR, LIR
MIR不依赖源语言和具体的CPU架构,通常和优化和变换有关