security-audit
一个可将你的智能体变成安全审计员的编码智能体(coding-agent)技能。它通过协调多个相互隔离的智能体,完成侦察、覆盖率驱动的漏洞挖掘、候选验证、结构化输出、独立记录复核,以及目标中立的安全报告。
这正是催生 Cloudflare 漏洞发现系统(vulnerability discovery harness)的技能,相关内容见《Build your own vulnerability harness》一文。该系统已发展为多阶段、集群级(fleet-wide)的体系;本技能则是其演化起点的单仓库版本。
它做什么
该技能分六个阶段运行结构化审计:
- 侦察 – 在
architecture.md和coverage-ledger.json中绘制架构、信任边界、输入面、既往证据与确定性覆盖情况。 - 覆盖率驱动的挖掘 – 从台账单元中分配相互隔离的 hunter,记录其检查项,并利用覆盖率批评者(coverage critics)找出盲区。
- 候选验证 – 将每个唯一的候选发现交给一个全新的验证者,由其尝试证伪。
- 结构化输出 – 将
confirmed、needs_validation和rejected记录写入findings.json,并对照report-schema.json进行校验。 - 独立记录复核 – 全新的智能体验证最终的来源声明。重大替换会再交由另一个独立验证者处理。
- 目标中立报告 – 从已验证记录和覆盖台账推导出
REPORT.md、FINDINGS-DETAIL.md和NEEDS-VALIDATION.md。
父流程在创建台账后以及每次后续台账更新后运行 validate-coverage-ledger.cjs,并在第 4 阶段以及第 5 阶段每次替换后运行 validate-findings.cjs。
判定结果是相互区分的: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 协议与认证目标的请求分帧、缓存与认证协议挖掘类别 |
CLIENT-SIDE.md | 针对客户端/浏览器目标的 DOM 注入、消息信任、UI 伪装与原型污染挖掘类别 |
SUPPLY-CHAIN-AND-RELEASE.md | 依赖、CI、发布、签名、更新、插件与扩展挖掘类别 |
CLOUD-AND-DEPLOYMENT.md | IAM、基础设施即代码、容器、无服务器、入口与运行时配置挖掘类别 |
PROTOCOLS-RPC-AND-MESSAGING.md | RPC、序列化、队列、消息代理、Webhook 与流式协议挖掘类别 |
RESOURCE-EXHAUSTION-AND-AVAILABILITY.md | 共享资源、配额、队列、worker 与运维支出挖掘类别 |
DATA-ISOLATION-AND-LIFECYCLE.md | 租户隔离、缓存、搜索、导出、备份、迁移、删除与恢复挖掘类别 |
DESKTOP-MOBILE-AND-LOCAL-IPC.md | 原生应用、深度链接、webview、导出组件、helper、守护进程与本地 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 | 发现校验器测试及与生产者兼容的 fixture 检查 |
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,用于零依赖的发现与覆盖台账校验器
- 一个由操作系统强制执行的沙箱,用于目标侧控制的构建、测试、进程、浏览器、模拟器、模糊测试工具与 fixture。沙箱必须禁用外部网络、使用经过清洗的白名单环境、强制资源限制,并只允许写入指定的临时路径。若缺少这些控制,工作流会将结论保持为
needs_validation而不会执行目标代码。
设计原则
- 只确认已确立的边界失败。 有来源依据但被阻断的线索保持为
needs_validation,并附上其确切的未解决事实。 - 对抗式验证。 检查某个发现的智能体永远不会是发现它的那个智能体。
- 严重级别需要影响支撑。 按可能性 × impact 评估,而不是对照清单看偏差。
- 纵深防御缺口不是漏洞。 如果 A 层已能阻止攻击,缺少 B 层只是一条加固建议。
- 多次运行可提升覆盖率。 在我们的测试运行中,单次运行发现的漏洞大约是多次运行总和的一半。
联系方式
关于 AI 驱动安全工具的疑问、反馈或经验交流:security-ai-research@cloudflare.com
许可证
MIT – 见 LICENSE。