1. 基本信息
| 项目 | 内容 |
|---|---|
| 名称 | libfuzzer-trailofbits-skills |
| 作者/维护者 | Trail of Bits(官方安全研究团队) |
| 来源链接 | https://github.com/trailofbits/skills/tree/main/plugins/testing-handbook-skills/skills/libfuzzer |
| 许可证 | CC-BY-SA-4.0(GitHub API,仓库级) |
| GitHub Stars | 6,419(仓库整体,GitHub API;合集仓库星数不代表本子技能个体热度,见第 6 章) |
| Forks | 555(GitHub API) |
| 最新版本 | 无正式 release 标签;本子技能所在路径最近一次提交 2026-06-05(GitHub API) |
| 安装方式 | /plugin install trailofbits/skills/plugins/testing-handbook-skills |
2. 功能介绍与亮点
libFuzzer 是 LLVM 项目内置的进程内覆盖率引导模糊测试工具,官方教程将其定位为 C/C++ 模糊测试的“推荐起点”。这份技能把从零搭建到真实漏洞复现的完整链路整理成一份可直接照抄的手册:
- 三平台安装步骤:Linux(apt)、macOS(Homebrew/Nix)、Windows(Visual Studio + Clang)分别给出命令,并提示 Windows 支持较弱、建议用本地或云端 Linux VM
- Harness 编写规则表:一张 Do/Don’t 对照表覆盖确定性、隔离性、线程回收等易错点,并配
FuzzedDataProvider处理复杂结构化输入的示例代码 - 编译与 Sanitizer 组合:
-fsanitize=fuzzer系列编译参数详解,含 ASan/UBSan/MSan 三种 sanitizer 的启用方式与常见问题对照表(如内存超限、误报、栈耗尽) - 语料库与运行参数:从创建、播种到最小化的语料库管理,以及多核运行、超时、字典加载等常用 campaign 参数
- 端到端真实案例:用 libpng 复现一个真实内存漏洞的完整流程——下载源码、安装依赖、插桩编译、获取现成 harness、准备语料与字典、编译运行,每一步都给出可执行命令
- 输出解读与故障排查:运行时统计字段(
NEW/REDUCE/cov/corp等)含义对照表,以及 9 类常见问题(无崩溃、执行速度慢、内存溢出、无法复现等)的排查表
3. 适用场景
所属分类:工程效率与代码质量(产出物是编写模糊测试入口代码、完成编译与运行这一具体工程实践,对应规则 B 问 4;不是安全审计报告本身,判定依据见第 7 步审计留痕)。
适用于刚决定给 C/C++ 项目引入模糊测试、需要从零搭建 libFuzzer 环境的开发者;已用其他 fuzzer 但想要一个更简单起点、后续再平滑迁移到 AFL++ 的工程师;需要在接入 OSS-Fuzz 等持续模糊测试基础设施前,先在本地验证 harness 能正常运行的团队。
4. 跨 Agent 兼容性
- Claude Code:✅ 原生支持——以
.claude-plugin/plugin.json声明的插件形式安装,官方 README 以此为主要安装路径 - Codex:✅ 原生支持——官方 README 明确声明“Codex supports Claude plugin marketplaces directly”,并给出
codex plugin marketplace add trailofbits/skills专属安装命令;本技能目录下还带agents/openai.yaml,供 Codex 市场展示图标与品牌色 - OpenClaw:❓ 未验证——已抓取材料未点名提及
- Hermes Agent:❓ 未验证——已抓取材料未点名提及
5. 推荐理由
libFuzzer 是 C/C++ 模糊测试事实上的入门工具,但官方 LLVM 文档分散在多个页面,且默认读者已有一定 fuzzing 背景。这份技能把“装 Clang、编译出第一个 fuzzer、喂语料、看崩溃、上 sanitizer、生成覆盖率报告”整条链路串成一份可直接照抄的手册,还附了一个用 libpng 复现真实内存漏洞的端到端案例——新手不需要东拼西凑官方文档与博客教程,跟着走一遍就能得到一个真正在跑的 fuzzer。
6. 评分
| 维度 | 分数 | 说明 |
|---|---|---|
| 受欢迎程度 | 8 | 官方 Trail of Bits 出品;仓库整体 6,419 stars(合集仓库星数不计入个体评分);第三方渠道 skills.sh 与 SKILL Leaderboard 均显示该子技能安装量约 3.9K |
| 可用性 | 9 | 一条命令安装插件;文档给出三平台安装步骤、可直接复制的 harness 与编译命令、完整的 libpng 端到端案例、9 类故障排查表,内容详实且可操作;仓库整体近一天内仍有提交,维护活跃 |
| 安全性 | 9 | 见下方安全检查清单 |
安全检查清单:
| 检查项 | 结果 |
|---|---|
| ① Shell 命令执行范围 | 内容为编译器与 fuzzer 命令示例(apt install、clang++、运行本地生成的 fuzz 二进制),均为用户在自有开发环境中主动执行的标准构建流程,无隐藏破坏性操作 |
| ② 运行时联网外发 | 纯本地方法论与命令参考,仅含指向 LLVM 官方文档等资源的说明性链接,无自动网络外发行为 |
| ③ API Key/凭据 | 不涉及任何凭据或密钥 |
| ④ 可疑指令 | 未发现 prompt injection 或混淆代码迹象 |
| ⑤ 作者信誉 | Trail of Bits 为知名安全研究公司,官方仓库出品,无造假迹象 |
| ⑥ License | CC-BY-SA-4.0,明确 |
| ⑦ 最近维护 | 所在仓库最近一次提交为 2026-08-03,活跃维护中 |
7. 跟同类 Skills 相比的优势
| 项目 | 定位 | 与本技能的差异 |
|---|---|---|
| fuzzing-obstacles(同插件) | 针对 fuzzer 被 checksum、全局状态等障碍卡住这一具体问题,给出条件编译绕过手法 | 是流程跑通后遇到瓶颈才用到的进阶补丁技巧,不覆盖从安装到出结果的完整入门流程 |
| address-sanitizer(同插件) | 专讲 ASan 本身的配置、常见坑与 ASAN_OPTIONS 调优 |
不涉及如何搭建 fuzzer 或语料库,是本技能“Sanitizer Integration”一节引用的更深入版本,两者是配套关系 |
| AFL++(libFuzzer 教程自身对比表中提及的同类工具) | 多核变异策略更丰富,适合大规模并行模糊测试 | 配置复杂度更高;libFuzzer 的 harness 可直接复用给 AFL++,本技能把 libFuzzer 定位为“更简单的起点,后续可平滑迁移” |
| OSS-Fuzz(Google 持续模糊测试托管服务) | 把已写好的 fuzzer 接入云端持续运行、自动生成 bug 报告的基础设施产品 | 不教如何从零写第一个 fuzzer;本技能覆盖的是接入此类服务之前的本地开发阶段 |
8. 用户评价
该技能目前在第三方平台(skills.sh、SKILL Leaderboard)均只显示安装量,尚无具名用户评价。
9. 其他补充
libfuzzer 与同插件的 harness-writing(编写模糊测试入口代码)、coverage-analysis(覆盖率分析)、fuzzing-dictionary(补充字典)构成互补组合,可按“写 harness → 用 libFuzzer 起步 → 测覆盖率 → 补字典”的顺序组合使用;单独使用本技能也可独立完成一轮 C/C++ 项目的模糊测试环境搭建与首次运行。
10. 安装使用方式
/plugin install trailofbits/skills/plugins/testing-handbook-skills
安装后无需重启,直接输入 /libfuzzer 即可触发;技能会引导用户确认目标代码是否用 Clang 编译、协助完成安装验证、生成 harness 模板,并给出对应平台的编译与运行命令。
11. 注意事项
- libFuzzer 本身自 2022 年底起进入仅维护模式(由 LLVM 项目维持,不再新增特性),技能文档已明确提示,但因其简单易用、社区支持广、可平滑迁移到 AFL++,仍是当前推荐的入门起点;
- Windows 平台支持较弱,官方教程建议改用本地或云端 Linux VM 进行模糊测试;
- 仅覆盖 C/C++(通过 Clang 编译),不含 Python(Atheris)、Ruby(Ruzzy)等其他语言的模糊测试指南;
- 属于合集仓库
trailofbits/skills下testing-handbook-skills插件的 15 个子技能之一,安装插件会连带装入其余 14 个子技能。