security-audit:把编码智能体变成安全审计员
本文目录
一个编码智能体技能(coding-agent skill),把你的智能体变成安全审计员。它编排相互隔离的智能体,依次完成侦察、覆盖率驱动的搜寻、候选项验证、结构化输出、独立记录核验,以及与目标无关的报告。
这个技能正是 Cloudflare 漏洞发现工具链(vulnerability harness)的种子,相关介绍见《Build your own vulnerability harness》。该工具链后来发展成多阶段、覆盖全机群的系统;本技能是它演进所依据的单仓库起点。
功能#
该技能分六个阶段运行结构化审计:
- 侦察(Reconnaissance)——在
architecture.md和coverage-ledger.json中梳理架构、信任边界、输入面、既往证据和确定性覆盖范围。 - 覆盖率驱动的搜寻(Coverage-led hunting)——从覆盖台账(ledger)单元分配相互隔离的搜寻者(hunter),记录他们的检查项,并用覆盖率批评者(coverage critic)找出缺口。
- 候选项验证(Candidate validation)——把每个唯一候选项交给全新的验证者(verifier),由后者设法证伪它。
- 结构化输出(Structured output)——把 confirmed、needs_validation 和 rejected 记录写入
findings.json,并按照report-schema.json校验。 - 独立记录核验(Independent record verification)——由全新智能体核验最终的来源论断。实质性替换(material replacement)会再交给另一名独立验证者。
- 目标无关的报告(Target-neutral reporting)——从已核验的记录和覆盖台账生成
REPORT.md、FINDINGS-DETAIL.md和NEEDS-VALIDATION.md。
父级智能体(parent)在创建台账之后,以及此后每次更新台账之后,都会运行 validate-coverage-ledger.cjs。它在第 4 阶段运行 validate-findings.cjs,并在第 5 阶段每次替换之后再次运行。
三种裁决彼此不同:confirmed 具有完整的来源追踪链和有边界的观测结果;needs_validation 带有确切未解决事实,且不给出严重性;rejected 记录的是已被证伪的候选项。
对同一仓库的多次运行是累加式的。该技能利用既往台账和发现来瞄准缺口、重新验证已变更的源码,并沿用当前源码的证据,而不会把过时或未解决的工作视为已覆盖。
文件#
| 文件 | 用途 |
|---|---|
SKILL.md | 安装配置、核心原则、平台术语、工作流概览和审计反模式 |
RECONNAISSANCE.md | 第 1 阶段的侦察提示词与综合指令 |
HUNTING.md | 第 2 阶段的编排、搜寻方法论和验证规则 |
ATTACK-CLASSES.md | 核心、通配符和「显而易见之事」的攻击提示词 |
MEMORY-SAFETY-AND-BINARY.md | 面向原生目标的内存安全、二进制和内核搜寻类别 |
AI-AND-LLM.md | 面向 LLM 支撑目标的提示注入、智能体/工具和输出处理搜寻类别 |
WEB-PROTOCOL-AND-AUTH.md | 面向 HTTP 协议和认证目标的 HTTP 请求分帧、缓存和认证协议搜寻类别 |
CLIENT-SIDE.md | 面向客户端/浏览器目标的 DOM 注入、消息信任、UI 伪装(UI redress)和原型污染搜寻类别 |
SUPPLY-CHAIN-AND-RELEASE.md | 依赖、CI、发布、签名、更新、插件与扩展搜寻类别 |
CLOUD-AND-DEPLOYMENT.md | IAM、基础设施即代码(IaC)、容器、无服务器、入口与运行时配置搜寻类别 |
PROTOCOLS-RPC-AND-MESSAGING.md | RPC、序列化、队列、消息代理、Webhook 和流式协议搜寻类别 |
RESOURCE-EXHAUSTION-AND-AVAILABILITY.md | 共享资源、配额、队列、工作进程和运营方开销搜寻类别 |
DATA-ISOLATION-AND-LIFECYCLE.md | 租户隔离、缓存、搜索、导出、备份、迁移、删除和恢复搜寻类别 |
DESKTOP-MOBILE-AND-LOCAL-IPC.md | 原生应用、深度链接、WebView、导出组件、辅助进程、守护进程和本地 IPC 搜寻类别 |
VALIDATION-AND-REPORTING.md | 第 3–6 阶段的候选项验证、结构化输出、记录核验和报告 |
report-schema.json | findings.json 全部三种裁决的 JSON schema |
validate-findings.cjs | 第 4、5 阶段用于 findings.json 的零依赖校验器 |
validate-findings.test.cjs | 发现校验器的测试和生产者兼容的测试夹具检查 |
validate-coverage-ledger.cjs | 第 1–5 阶段用于 coverage-ledger.json 的零依赖校验器 |
validate-coverage-ledger.test.cjs | 覆盖台账校验器的测试 |
安装#
使用 Skills CLI 安装该技能:
npx skills add https://github.com/cloudflare/security-audit-skill \
--skill security-audit
使用 --global 进行用户级安装:
npx skills add https://github.com/cloudflare/security-audit-skill \
--skill security-audit \
--global
运行 npx skills --help 查看智能体选择和非交互式选项。
用法#
在你想要审计的代码库中(或指向该代码库)启动编码智能体,然后要求它做安全审计:
security audit this codebase
find security vulnerabilities in ./src
do a security review, output to ~/audits/my-project
当请求匹配其触发条件(security audit、find vulnerabilities、pen-test the code 等)时,技能会自动激活。直接请求代码库审计或渗透测试会使用完整审计模式。安全问题与聚焦的漏洞工作使用指导模式,除非你要求生成报告产物。在完整审计模式下,未指定输出目录时默认使用 ~/security-audit-skill/<repo-name>/run-<N>。只有当你明确选择版本控制会忽略的目录时,工作流才会写入目标仓库内部。
要求#
- 具备支持工具使用和并行子智能体的模型的编码智能体。
- Node.js,用于运行零依赖的发现校验器和覆盖台账校验器。
- 一个由操作系统强制执行的沙箱,用于目标代码控制的构建、测试、进程、浏览器、模拟器、模糊测试器和测试夹具。它必须禁用外部网络、使用经过净化的白名单环境、实施资源限制,并且只允许写入分配的暂存路径。缺少这些控制时,工作流会让相关线索保持为 needs_validation,而不执行目标代码。
设计原则#
- 只确认已确立的边界失效。把有来源依据但受阻的线索保留为 needs_validation,并附上其确切未解决事实。
- 对抗性验证。检查某条发现(finding)的智能体,永远不能是发现它的智能体。
- 严重性需要影响。即可能性 × 影响,而不是与清单的偏离程度。
- 纵深防御缺口不是漏洞。如果 A 层阻止了攻击,那么 B 层的缺失只是一条加固建议。
- 多次运行提升覆盖率。在我们的测试运行中,单次运行发现的漏洞大约只有重复运行总发现量的一半。
联系#
有关 AI 驱动的安全工具的问题、反馈或经验交流:security-ai-research@cloudflare.com
许可证#
MIT——见 LICENSE。
关于#
一个用于多阶段安全审计的编码智能体技能,可产出经过独立验证、机器可读的发现。