工程开发
harness-writing avatar

harness-writing

编写有效模糊测试 (fuzzing) 脚本的技术。适用于建立新的模糊测试目标或优化现有的脚本代码。

简介

harness-writing 技能提供了一套结构化的方法,用于开发高质量的模糊测试 (fuzzing) 脚本。这些脚本是模糊测试器与受测系统 (SUT) 之间最重要的切入点。一个设计良好的脚本是任何模糊测试活动中最关键的组件,因为它决定了来自 libFuzzer 或 cargo-fuzz 等工具的随机原始数据,如何转换为应用程序可理解的输入。此技能协助开发者避开常见陷阱,例如遗漏代码路径、无法重现的崩溃,或对复杂子系统的测试覆盖率不足。

  • 使用标准接口(如 LLVMFuzzerTestOneInput 或 fuzz_target! 宏)来实现 C、C++ 和 Rust 的脚本模式。

  • 使用 FuzzedDataProvider 的结构化数据提取策略,将原始字节转换为类型化基本类型、字符串和复杂对象。

  • 输入验证逻辑,用于过滤掉无意义或格式错误的输入,确保测试器将资源集中在深度逻辑,而非表面解析错误。

  • 整合确定性检查,以确保在发现崩溃后能轻松进行重现。

  • 处理交错模糊测试 (interleaved fuzzing) 的进阶技术,通过单个脚本管理多个作业或 API 调用,以触发受测系统内的复杂状态转换。

  • 在发起新的模糊测试活动,或现有覆盖率不足以发现深层安全漏洞时,请应用此技术。

  • 利用提供的字节转型、大小验证和数据序列化的快速参考模式,以减少重复性代码。

  • 确保脚本能有效测试高复杂度区域,例如协议解析器、文件格式处理、加密运算及输入验证常式。

  • 限制:此工具不会自动生成特定于复杂逻辑的脚本;它提供手动建立所需的架构框架与代码模式。用户应确保不会跳过已满足覆盖率需求且维护良好的现有基础设施。

  • 预期的输入包括目标源代码、API 文档和任何现有的测试装置。预期的输出是稳健且高效的模糊测试入口,能够驱动受测系统进入深层且高风险的代码路径。

仓库统计

Star 数
4,884
Fork 数
424
Open Issue 数
21
主要语言
Python
默认分支
main
同步状态
空闲
最近同步时间
2026年4月29日 14:38
在 GitHub 查看