技能使用指南

testing-handbook-skills(测试手册技能)Skill 是什么?

测试手册技能(testing-handbook-skills)把 Trail of Bits 应用安全测试手册整理成 17 个子技能,覆盖 libFuzzer、AFL++、cargo-fuzz、Atheris、Ruzzy 六种模糊器,以及工具编写、覆盖率分析、AddressSanitizer、Semgrep、CodeQL、Wycheproof 与常数时间测试,自带七步模糊测试工作流与 CI/CD 落地路径。想给项目补上安全测试?先装这个技能再动手。

测试手册技能Skilltesting-handbook-skills
11 个章节 约 16 分钟阅读 AI 智能生成

测试手册技能:把 Trail of Bits 应用安全测试手册,装进你的 AI 编码助手

  • 一句话定位:测试手册技能(testing-handbook-skills)是一套由 Trail of Bits 应用安全测试手册衍生出来的安全测试工具包技能,把模糊测试、覆盖率分析、消毒器、静态分析与密码学测试的实操知识,整理成 17 个可按需调用的子技能。
  • 覆盖语言明确:C/C++、Rust、Python、Ruby 四类语言的模糊测试入口全都有对应方案,C/C++ 提供 libFuzzer、AFL++、libAFL 三种选择。
  • 不只是“讲概念”:技能内置完整工作流,从选择模糊器、编写工具(harness)、构建消毒器、准备种子语料,一直走到覆盖率分析与崩溃分类。
  • 有明确边界:技能自带“何时不使用”的说明,遇到智能合约审计、自定义 Semgrep 规则编写、通用代码审查等场景会提示你改换其它技能,避免答非所问。
  • 适合谁用:需要给 C/C++ 库、Rust crate、Python 或 Ruby 解析器补安全测试的开发者,以及需要快速落地静态扫描与密码学验证的安全工程师。

1. 该技能叫什么?如何一键安装 AI 技能提升开发效率?

基本信息

项目 内容
技能中文名 测试手册技能
技能英文名 testing-handbook-skills
技能 ID 13553
来源 基于 Trail of Bits 应用程序安全测试手册生成
子技能数量 17 项

它解决什么问题

安全测试真正的门槛往往体现在“知道要测,但不知道从哪一步下手”,想写模糊测试工具(harness)并不难。以模糊测试为例,一个完整活动要跨过这些关卡:选哪个模糊器、工具函数怎么写、用什么消毒器构建、种子语料怎么准备、覆盖率怎么看、崩溃怎么去重。这些信息分散在模糊器文档、消毒器手册、静态分析工具文档和论文里,新手常常卡在第一关就放弃。

测试手册技能把这些零散知识整合到一个技能入口里:你只需描述目标语言的代码和测试意图,AI 助手就能沿着技能内置的工作流给出对应子技能的具体指引,而不是给你一段泛泛而谈的“建议做模糊测试”。

一键安装的思路与步骤

AI 技能的本质是“可被助手加载的专业知识包”,安装一次,之后在对话中按需触发即可,不必每次重新解释背景。通用流程如下(具体命令与入口以官方说明为准,不同助手平台差异较大):

  1. 确认安装前提:你的 AI 编码助手需要支持“技能/插件”机制,并且能读取技能描述文件;目标项目侧则建议准备好对应语言的工具链,例如 C/C++ 需要 LLVM 相关环境、Rust 需要 cargo、Python 需要能安装 Atheris 的环境、Ruby 需要能安装 Ruzzy 的环境。
  2. 找到技能入口:在技能市场或技能管理面板中,用技能名称「测试手册技能」或英文名 testing-handbook-skills 进行搜索,也可以直接按技能 ID 13553 定位。安装入口的具体路径以官方说明为准。
  3. 执行安装:按平台提示完成添加/启用操作。若平台支持命令行安装,通常是一条安装命令;若为图形界面,则是点击“安装/启用”按钮。命令形式以官方说明为准。
  4. 验证是否生效:安装后在对话中提一个试探性问题,例如“这个技能一共包含哪些模糊测试工具”,若助手能准确列出 libFuzzer、AFL++、libAFL、cargo-fuzz、Atheris、Ruzzy 六项,说明技能已正常加载;再追问“写 Python 模糊测试该用哪个子技能”,若引导到 Atheris 与工具编写技能,则说明子技能路由也正常。

2. 该技能的主要功能和特点

功能面:17 个子技能各司其职

  • 六种模糊测试器覆盖:C/C++ 侧提供 libFuzzer(基于 LLVM 的覆盖引导模糊测试)、AFL++(高级变异基模糊测试)、libAFL(基于 LibAFL 的自定义模糊器);Rust 侧为 cargo-fuzz(使用 libFuzzer 后端的原生模糊测试);Python 侧为 Atheris(覆盖引导模糊测试);Ruby 侧为 Ruzzy(覆盖引导模糊测试)。
  • 工具编写能力:专门的 harness 编写技能,教你为目标函数写出有效的模糊测试入口,而不是让模糊器空转。
  • 覆盖率分析:测量并改进代码覆盖率,帮你判断“测了这么多,到底测到了没有”。
  • 模糊测试词典与障碍突破:前者用于创建有效的词典提升探索效率,后者针对常见的模糊测试卡点给出应对方式。
  • 消毒器支持:AddressSanitizer 专项技能用于检测内存错误,并在工作流中推荐把它作为基线;同时覆盖 UBSan、MSan 等消毒器的使用场景。
  • 静态分析双工具:Semgrep 负责快速模式匹配安全扫描,CodeQL 负责深度语义代码分析。
  • 密码学测试两项:Wycheproof 提供密码实现测试向量,常数时间测试用于验证密码学实现的常数时间属性。
  • 基础设施与元能力:OSS-Fuzz 用于接入 Google 的持续模糊测试服务;生成器元技能可以从测试手册继续生成新的技能。

差异化特点:和普通工具比强在哪

  • 按语言自动分流:技能内置“按语言快速入门”表,C/C++ 对应 LLVMFuzzerTestOneInput 入口与 ASan + UBSan 组合,Rust 对应 fuzz_target! 宏与内置消毒器,Python 对应 atheris.FuzzedDataProvider,Ruby 对应 ruzzy 工具模式。你不需要先想清楚“我该用哪个”,说清语言和目标即可。
  • 有工作流,不是知识点堆砌:模糊测试活动被拆成选型、写工具、消毒器构建、种子语料、运行监控、覆盖分析、崩溃分类七个步骤,天然可以照着执行。
  • 带 CI/CD 落地路径:明确给出三条持续化路线——开源项目用 OSS-Fuzz 做持续模糊测试,PR 阶段用 Semgrep + CodeQL 做静态分析,密码相关用 Wycheproof 测试向量验证。
  • 明确的不适用边界:智能合约审计、编写自定义 Semgrep 规则、通用代码审查、无测试计划的漏洞挖掘,都会提示改用其它技能(例如 security-building-secure-contracts、semgrep-rule-creator、security-differential-review、audit-context-building),减少误用。

3. 如何使用该技能?

使用方式以对话为主,按“描述目标 → 获得子技能指引 → 落地执行”推进。以下为可直接参考的步骤与示例。

  1. 说明目标语言与测试对象。示例提问:我有一个 C 语言库函数 int parse_packet(const uint8_t *data, size_t size);,想开始做模糊测试,该选哪个模糊器? 期望输出:技能会依据模糊器选型表推荐 libFuzzer 或 AFL++,并说明各自适用场景。
  2. 请求编写模糊测试工具。示例提问:用 libFuzzer 为上面的 parse_packet 写一个工具骨架。 期望输出:以 LLVMFuzzerTestOneInput 为入口的工具代码骨架,以及如何把输入字节流交给目标函数的说明。
  3. 确定构建与消毒器组合。示例提问:我应该在哪个消毒器组合下运行这次活动? 期望输出:技能工作流建议以 AddressSanitizer 作为基线,C/C++ 场景可叠加 UBSan,并说明消毒器要解决的问题类型。
  4. 准备种子语料并启动活动。示例提问:这个协议解析函数应该准备什么样的种子语料和词典? 期望输出:关于包含代表性输入、以及通过模糊测试词典提升探索效率的建议。
  5. 跑起来之后看覆盖率。示例提问:活动跑了两天没有新崩溃,怎么判断是不是覆盖率到顶了? 期望输出:引导到覆盖率分析子技能,给出查找未覆盖代码、改进工具的思路。
  6. 崩溃分类与去重。示例提问:现在有一批崩溃样本,怎么去重和分类? 期望输出:按工作流最后一步给出分类和去重的处理思路。
  7. 换语言时复用心智模型。Rust 项目可问:Rust 里用 cargo-fuzz 怎么写 fuzz target? 期望输出:以 fuzz_target! 宏为核心的写法与内置消毒器说明。Python 项目可问:用 Atheris 模糊测试一个 JSON 解析函数怎么写? 期望输出:基于 atheris.FuzzedDataProvider 的工具写法。
  8. 接入持续化流程。示例提问:我想把测试放进 CI,PR 阶段也想拦一下安全问题,怎么搭? 期望输出:给出 OSS-Fuzz、Semgrep + CodeQL、Wycheproof 三条路线的组合建议。

输入输出小结:输入是“语言 + 目标函数/模块 + 你想解决的问题”,输出通常是可执行的选型建议、工具代码骨架、构建配置方向、分析思路。凡是涉及具体版本的命令细节,建议以对应工具的官方文档为准。

4. 同类型竞品对比分析

方案名称 定位 核心功能 安装/使用门槛 适用场景 优势与不足
测试手册技能(testing-handbook-skills) 覆盖安全测试全流程的技能包 6 种模糊器、工具编写、覆盖率分析、词典、障碍突破、AddressSanitizer、Semgrep、CodeQL、Wycheproof、常数时间测试、OSS-Fuzz 共 17 项子技能 需支持技能的 AI 助手,安装后对话即用;具体入口以官方说明为准 从零搭建模糊测试活动、给项目补安全测试、密码实现验证 优势:一站式、有工作流、按语言分流、边界清晰;不足:具体命令仍需对照各工具官方文档,深度定制规则需改用专门技能
直接阅读 Trail of Bits 测试手册原文 权威在线知识库 完整的安全测试方法论与案例 免费阅读,但需要自行检索与串联章节 系统性学习、深度研究 优势:最权威、内容详尽;不足:信息密度高、上手慢,需要自己把知识翻译成项目里的具体动作
通用 AI 编程助手(未安装技能) 通用代码问答 代码生成、解释、调试 注册即用,门槛最低 日常编码、快速答疑 优势:泛用性强;不足:安全测试知识不成体系,模糊器选型、消毒器组合等细节容易给出模糊或过时建议
单一工具链(模糊器 + 静态分析工具各自为战) 工具原生方案 各自领域内功能完备 需分别学习多种工具的使用方式与配置 已明确工具选型的成熟团队 优势:掌控力强、可深度定制;不足:选型、串联与流程设计成本高,跨语言场景需重复学习

从对比可以看出,测试手册技能的独特价值在于“编排层”定位:它不替代 libFuzzer、Semgrep 这些工具,而是帮你决定用哪个、怎么串起来、下一步做什么。

5. 该技能的典型应用场景与实际体验情况

场景一:C/C++ 库维护者首次搭建模糊测试

角色是一位开源 C 库的维护者,痛点是从未做过模糊测试,面对 libFuzzer 与 AFL++ 不知道如何取舍。使用方式是先问选型,再请求为目标解析函数编写 LLVMFuzzerTestOneInput 工具,最后确认消毒器组合。实际体验:上手难度低,技能把“选型—写工具—构建—跑—看覆盖率”串成一条线,最容易踩的坑是种子语料质量不足导致覆盖率长期上不去,需要按覆盖率分析子技能的建议回头补语料。

场景二:Rust 项目把模糊测试接进持续集成

角色是 Rust 后端开发者,痛点是担心解析库在异常输入下 panic。使用方式是以 cargo-fuzz 为入口,结合 fuzz_target! 宏写目标,再按工作流把持续模糊测试接到 OSS-Fuzz 路线。实际体验:技能对“Rust 用内置消毒器”这一点说明清晰,省去了照搬 C/C++ 消毒器经验的弯路;需要注意 fuzz 目标要尽量小而聚焦,把整个服务塞进一个目标会让崩溃难以定位。

场景三:Python 团队给解析器补覆盖引导模糊测试

角色是 Python 数据处理服务开发者,痛点是历史遗留解析代码缺少异常输入测试。使用方式是用 Atheris 配合 atheris.FuzzedDataProvider 构造输入,先从单函数切入。实际体验:Python 场景门槛最低,几乎不需要额外构建知识;注意 Python 侧没有 C/C++ 那样的消毒器组合,内存类问题的发现能力有限,遇到原生扩展部分应回到 C/C++ 方案。

场景四:安全工程师做代码扫描与密码实现验证

角色是应用安全工程师,痛点是在 PR 阶段既想快速拦问题,又想对关键密码实现做更严格验证。使用方式是 PR 阶段用 Semgrep 做快速模式匹配扫描、用 CodeQL 做深度语义分析,密码相关模块用 Wycheproof 测试向量与常数时间测试验证。实际体验:这套组合的分工非常清楚,快慢搭配合理;注意编写自定义 Semgrep 规则并不在本技能范围内,应改用专门规则创作技能。

6. 该技能能为用户带来的价值

效率层面:把“查文档、对版本、拼流程”的时间压缩成几轮对话。原本需要分别翻阅模糊器文档、消毒器手册、静态分析工具说明的工作,现在可以在一个技能入口内完成,模糊测试活动的启动路径从“摸索数天”缩短到“按步骤推进”。

门槛层面:安全测试长期存在“知道重要但不会做”的断层,尤其是工具编写(harness)这一步劝退了大量开发者。技能把选型表、语言对照表、消毒器建议直接摆出来,让没有安全测试背景的开发者也能迈出第一步。

质量层面:覆盖率分析、崩溃分类去重这些“后半程”能力被显式纳入工作流,避免出现“跑了模糊测试但没测到关键路径”的假安全感。CI/CD 章节则让安全测试从一次性动作变成持续保障。

长期价值:技能源自持续维护的应用安全测试手册,并有生成器元技能可以从手册继续生成新技能,意味着这套知识包具备扩展性——今天覆盖四门语言的模糊测试,后续可沿着同一套结构继续生长。

7. 常见问题 FAQ

Q1:这个技能怎么安装?需要付费吗?

在支持技能机制的 AI 助手中搜索「测试手册技能」或英文名 testing-handbook-skills,也可按技能 ID 13553 定位,按平台提示完成安装或启用即可。具体安装入口、命令形式以及是否收费,以官方说明为准。安装后建议用“列出包含哪些模糊测试工具”这类问题验证是否生效。

Q2:我只会 Python,这个技能对我有用吗?

有用。技能覆盖 Python 的 Atheris 覆盖引导模糊测试,并配有工具编写、覆盖率分析、词典等通用子技能。Python 场景的上手门槛在四门语言中最低,适合作为安全测试的起点;如果项目包含原生扩展,再按需切到 C/C++ 相关子技能。

Q3:它能直接帮我做智能合约审计或写 Semgrep 规则吗?

不能,技能本身明确列出了不适用范围:智能合约审计、编写自定义 Semgrep 规则、通用代码审查、无测试计划的漏洞挖掘,都建议改用对应的专门技能。这种边界设计反而能避免你在错误的路径上浪费时间。

Q4:和直接读 Trail of Bits 测试手册原文相比,优势在哪?

手册原文最权威、最详尽,适合系统学习;技能的优势是“可执行”——它按语言和任务做了分流,内置七步模糊测试工作流和 CI/CD 落地路径,能在你写代码的对话里直接给出下一步动作。两者并不冲突:用技能推进项目,用原手册补充底层原理。

Q5:技能会替我跑完整个模糊测试活动吗?

不会。技能提供的是选型建议、工具代码骨架、构建与消毒器组合方向、覆盖率与崩溃分析方法,实际编译、运行、调优仍需你在本地或 CI 环境中执行。把它理解成一位熟悉安全测试流程、随时可问的顾问,比理解成自动化流水线更准确。