Fuzz 测试(模糊测试)全套专业名词详解

发布时间:2026/7/24 14:04:24
Fuzz 测试(模糊测试)全套专业名词详解 目录一、基础核心术语1. Fuzz Testing / Fuzzing 模糊测试2. Fuzzer 模糊器3. Target / SUTSystem Under Test被测目标二、用例生成相关名词Fuzz 核心1. Mutator 变异器2. Seed / Corpus 种子语料 / 语料库3. Generational Fuzz 生成式模糊4. Mutation-based Fuzz 变异式模糊三、覆盖率与引导优化名词智能 Fuzz1. Code Coverage 代码覆盖率2. Feedback-driven Fuzz 反馈引导式模糊3. Path 代码路径四、异常捕获、漏洞判定名词1. Crash 程序崩溃2. Sanitizer 内存检查消毒器3. Hang / Timeout 卡死 / 超时4. Unique Crash 唯一崩溃样本5. Stack Trace / Backtrace 调用堆栈五、高级 Fuzz 工程术语1. Instrumentation 插桩2. Binary-only Fuzz 无源码模糊测试3. Harness / Fuzz Harness 测试驱动桩4. Dictionary 变异字典5. Deterministic Mutation 确定性变异6. Crossover / Splicing 样本拼接六、漏洞类型专属名词Fuzz 高频挖出七、工具生态通用名词一、基础核心术语1. Fuzz Testing / Fuzzing 模糊测试定义一种自动化软件漏洞挖掘技术通过向程序接口、文件解析器、网络协议、API 等输入大量非预期、畸形、随机、半随机构造的数据迫使程序出现崩溃、内存越界、死锁、逻辑异常、权限绕过等漏洞。 核心逻辑正常输入不会暴露缺陷异常脏数据才能触发边界缺陷。2. Fuzzer 模糊器定义执行模糊测试的自动化工具程序负责生成畸形用例、投喂目标程序、监控程序异常、保存崩溃样本。 分类文件 Fuzzer、网络协议 Fuzzer、API Fuzzer、内核 Fuzzer、Web Fuzzer。3. Target / SUTSystem Under Test被测目标定义被模糊测试的程序、组件、接口、驱动、固件。 例图片解析库 libpng、HTTP 服务、Windows 驱动、移动端 APP、数据库。二、用例生成相关名词Fuzz 核心1. Mutator 变异器定义对种子用例做修改、篡改生成畸形新用例的算法 / 模块是 Fuzz 核心模块。 常见变异方式位翻转Bit Flip随机修改二进制单个 bit字节替换把正常字节替换成 0x00、0xFF、特殊控制字符增删数据超长字符串、空数据、截断文件数值溢出超大整数、负数、零值2. Seed / Corpus 种子语料 / 语料库Seed 种子格式合法、结构完整的正常样本如一张正常 png、标准 http 请求作为变异的原始素材。Corpus 语料库全部种子 变异后有效覆盖新代码路径的优质用例集合。 作用无种子纯随机生成数据效率极低基于真实样本变异更容易命中程序解析逻辑。3. Generational Fuzz 生成式模糊定义不依赖种子根据协议 / 文件格式语法规则从零生成合法 畸形混合用例。 适用场景已知完整协议规范如 HTTP、TCP、protobuf。4. Mutation-based Fuzz 变异式模糊定义行业最主流方案基于现有种子样本随机篡改生成脏数据AFL、libFuzzer 均为此类。三、覆盖率与引导优化名词智能 Fuzz1. Code Coverage 代码覆盖率定义衡量 Fuzzer 是否走到程序全部代码分支的指标。 模糊测试核心目标最大化代码覆盖率覆盖罕用分支、异常处理逻辑。 细分行覆盖率、分支覆盖率、边覆盖率AFL 使用边覆盖。2. Feedback-driven Fuzz 反馈引导式模糊定义现代高性能 Fuzz 核心机制工具每次运行用例后收集代码覆盖率反馈若新用例走到了之前未覆盖的代码 → 判定为优质用例存入语料库持续变异若重复旧代码路径 → 丢弃不再重点变异。 代表工具AFL、libFuzzer。3. Path 代码路径定义程序执行时经过的一串代码分支组合不同输入会触发不同路径。Fuzzer 持续探索全新路径以挖掘深层漏洞。四、异常捕获、漏洞判定名词1. Crash 程序崩溃定义Fuzz 最直观的缺陷现象程序异常终止。 常见崩溃根源缓冲区溢出、空指针解引用、释放后使用 UAF、数组越界、除零错误。2. Sanitizer 内存检查消毒器定义编译器插桩工具在程序运行时实时检测内存违规行为放大漏洞触发概率精准定位缺陷。 主流类型ASANAddressSanitizer检测缓冲区溢出、UAF、空指针、堆破坏Fuzz 标配UBSANUndefinedBehaviorSanitizer捕获整数溢出、未定义运算MSANMemorySanitizer检测读取未初始化内存TSANThreadSanitizer多线程竞争、数据竞态漏洞3. Hang / Timeout 卡死 / 超时定义输入畸形数据后程序进入死循环、无限等待、阻塞无正常返回属于高危逻辑漏洞。Fuzzer 通过计时器判定超时卡死。4. Unique Crash 唯一崩溃样本定义去重后的崩溃用例。大量畸形输入可能触发同一处代码漏洞工具通过崩溃堆栈哈希去重避免重复分析同一漏洞。5. Stack Trace / Backtrace 调用堆栈定义程序崩溃时记录的函数调用链路用于定位漏洞发生的具体代码行是漏洞复现与修复的关键依据。五、高级 Fuzz 工程术语1. Instrumentation 插桩定义编译阶段或运行时向目标程序插入检测代码探针实现两大功能收集代码覆盖率实现反馈引导配合 Sanitizer 监控内存异常。 分类编译期插桩AFL、libFuzzer、二进制插桩QEMU、Frida无源码 Fuzz。2. Binary-only Fuzz 无源码模糊测试定义没有目标程序源代码直接对编译后的二进制 exe/dll/elf 进行模糊测试依靠 QEMU、Frida、Radamsa 等二进制插桩方案。 对比源码 Fuzz有源码编译插桩效率更高。3. Harness / Fuzz Harness 测试驱动桩定义一段简短封装代码作为 Fuzzer 和被测函数之间的桥梁。 作用Fuzzer 生成二进制字节流Harness 把字节流传入目标待测试函数隔离环境、简化测试入口。 示例 libFuzzer 标准 Harness 函数LLVMFuzzerTestOneInput。4. Dictionary 变异字典定义人工预设特殊关键词、控制字符、协议标记、危险字符串的文本库变异器优先使用字典内容替换种子数据大幅提升命中解析漏洞概率。 例XML 标签、SQL 特殊字符、超长分隔符、空字节 0x00。5. Deterministic Mutation 确定性变异定义对种子执行一套固定、完整的基础变异操作逐位翻转、字节替换确保基础畸形场景全覆盖与之相对随机变异随机篡改速度更快。6. Crossover / Splicing 样本拼接高级变异策略将两个不同种子样本的二进制片段拼接融合生成全新混合样本用于破解复杂多字段文件 / 协议解析逻辑。六、漏洞类型专属名词Fuzz 高频挖出Buffer Overflow 缓冲区溢出写入数据超出内存缓冲区长度覆盖相邻内存可执行任意代码。Use-After-Free (UAF) 释放后重用堆内存释放后程序仍保留指针并读写该内存高危内存破坏漏洞。Null Pointer Dereference 空指针解引用程序调用地址为 0 的指针直接触发程序崩溃。Heap Corruption 堆破坏堆内存管理结构被篡改引发崩溃、权限逃逸。Integer Overflow 整数溢出数值运算超出变量存储上限数值反转引发缓冲区分配过小漏洞。Divide-by-Zero 除零错误除数为 0 触发程序异常终止。七、工具生态通用名词AFL当下最流行的开源反馈式模糊测试工具基于 QEMU 二进制插桩支持源码 / 无源码 Fuzz。libFuzzerLLVM 内置轻量级 Fuzzer集成 Clang 编译器适合单元函数模糊测试。Radamsa独立通用变异器常搭配脚本实现简易协议 / 文件 Fuzz。QEMU Mode QEMU 模式AFL 的二进制模拟器模式无需源码即可对闭源程序插桩模糊。Minimization 样本最小化对触发崩溃的超长畸形用例自动删减无关字节得到最小可复现样本方便开发定位漏洞。