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架构,通常和优化和变换有关