模糊测试生成器Skill fuzzer-generator

此技能用于开发模糊测试工具,生成随机输入以发现软件中的错误、崩溃和安全漏洞。关键词包括:模糊测试、安全测试、bug发现、代码覆盖、输入生成、崩溃分析。

测试 0 次安装 0 次浏览 更新于 3/13/2026

name: 模糊测试生成器 description: “创建模糊测试工具,用于生成随机输入以发现bug和安全漏洞。” version: “1.0.0” tags: [模糊测试, 安全, 测试, 发现bug, 随机生成] difficulty: 中级 languages: [python, rust, c, go] dependencies: [基于属性的测试器, 污点分析]

模糊测试生成器

创建模糊测试工具,自动生成随机输入以发现程序中的bug、崩溃和安全漏洞。

何时使用此技能

  • 发现崩溃和内存安全问题
  • 发现输入验证bug
  • 安全漏洞发现
  • 编译器bug发现

此技能的功能

  1. 输入生成: 创建目标程序的随机有效输入
  2. 覆盖跟踪: 监控代码覆盖以引导模糊测试
  3. 变异策略: 实现变异和基于生成的模糊测试
  4. 崩溃分析: 分类和最小化崩溃输入

关键概念

概念 描述
覆盖引导的模糊测试 使用覆盖来优先化输入
语料库 一组有趣的输入
变异 对现有输入的小改动
崩溃最小化 将输入简化为最小形式

提示

  • 使用AddressSanitizer构建以发现内存安全bug
  • 对于C/C++使用libFuzzer,对于Python使用Atheris
  • 维护有趣输入的语料库
  • 最小化崩溃以找到根本原因

相关技能

  • property-based-tester - 结构化属性测试
  • taint-analysis - 跟踪不受信任的输入
  • sandbox-builder - 安全的模糊测试环境

参考文献

参考 为何重要
libFuzzer: 进程内覆盖引导的模糊测试 LLVM模糊测试引擎
AFL: American Fuzzy Lop 流行的灰盒模糊测试器
Finding Bugs in JavaScript Engines 模糊测试案例研究

权衡和局限性

方法 优点 缺点
覆盖引导 高效,发现深度bug 需要工具化
黑盒 不需要源代码 效果较差
基于语法 生成有效输入 需要语法

评估标准

标准 关注点
覆盖 高效的代码覆盖
Bug发现 发现真实bug
性能 高测试数/秒

质量指标

: 覆盖好,发现bug,高吞吐量 ⚠️ 警告: 覆盖有限,慢 ❌ : 没有发现bug,崩溃

研究工具和工件

模糊测试工具和框架:

工具 语言 学习内容
libFuzzer C/C++ 进程内覆盖引导
AFL++ C 灰盒模糊测试
Honggfuzz C 反馈驱动
Fuzzilli JavaScript JavaScript引擎模糊测试
Oathbreaker Python 基于语法

模糊测试基础设施

  • OSS-Fuzz - 持续模糊测试服务
  • Fuzzbench - 模糊测试评估框架

研究前沿

1. 使用LLM进行模糊测试

  • 方法: 使用语言模型进行输入生成
  • 论文: “Fuzzing with LLMs” (2023+)
  • 工具: ChatGPT辅助的模糊测试

2. 混合模糊测试

  • 方法: 结合符号执行与模糊测试
  • 论文: “Driller” (Shoshitaishvili)
  • 工具: QSYM, Angora

实现陷阱

陷阱 实际后果 解决方案
覆盖平台 停止发现新路径 添加语料库,变异
崩溃重复 太多类似崩溃 最小化输入