术语
- Corpus:语料库,又称test corpus或fuzzing corpus,为测试输入的集合,指能产生最大代码覆盖率的测试输入的最小集合
- Cross-pollination :这个术语来源于植物学,在植物学中,一种植物使另一种植物授粉。在模糊处理中,交叉授粉是指对一个模糊目标使用一个语料库来扩展另一个模糊目标的语料库。例如,如果有两个库处理相同的通用数据格式,那么对它们各自的语料库进行交叉授粉通常比较有利。
- Dictionary:是为模糊目标指定有目标趣标记的文件。大多数模糊引擎支持字典,并将调整它们的变异策略来一起处理这些标记。
- Fuzz Target:模糊测试对象,又称Target Function、Fuzzing Target Function和Fuzzing Entry Point,是我们进行fuzz的对象。
- Fuzzer Build :包含给定项目的所有模糊测试目标(Fuzz Target)的构建,使用特定的模糊引擎在特定的构建模式下运行(例如,启用/禁用断言),并可选地与Sanitizer组合使用。在os - fuzz中,它也被称为作业类型。
- Fuzzing Engine:模糊测试引擎,一种通过执行模糊目标来为其寻找有趣输入的工具。例如:libFuzzer, AFL, honggfuzz等等。
- Mutation Engine:变异引擎,一个工具,它将一组测试用例作为输入,并创建它们的变异版本。它只是一个发生器,并不把突变传递给模糊测试目标。例如:radamsa(一个通用的测试突变体)。
- Sanitizer:一个动态测试工具,可以在程序执行过程中检测错误。例子:ASan, DFSan, LSan, MSan, TSan, UBSan。
- Seed Corpus,种子语料库,为提供模糊的初始覆盖而准备的一个小型初始语料库。种子语料库不是由fuzzers自己创建的,通常是从现有的测试输入准备的,或者可以手工制作以提供有趣的覆盖范围。它们经常与模糊目标一起检入源代码。
- Test Generator:根据某些规则或语法从头生成测试用例的工具。例如:csmith (C语言的测试生成器),cross_fuzz(跨文档DOM绑定测试生成器)。
- Test Input:用作模糊目标输入的字节序列。通常,一个测试输入存储在一个单独的文件中。