如需下载,请在电脑端打开本页操作。
README.md

security-audit

一个面向编码 Agent 的技能,能把你的 Agent 变成一名安全审计员。它通过编排多个相互隔离的 Agent,依次完成侦察摸底、基于覆盖率的漏洞挖掘、候选漏洞验证、结构化输出、独立记录核验,以及不偏不倚的目标中立报告。

这个技能正是 Cloudflare 漏洞发现框架的前身,详见《构建你自己的漏洞检测框架》(英文)。后来那个框架发展成了一个多阶段、覆盖全集群的系统;而本技能就是它最初的单仓库起点。

能做什么

本技能以六个阶段执行结构化审计:

  1. 侦察(Reconnaissance)——在 architecture.md 和 coverage-ledger.json 中梳理架构、信任边界、输入面、已有证据和确定性覆盖率。
  2. 基于覆盖率的漏洞挖掘(Coverage-led hunting)——从覆盖率清单中分配任务给相互隔离的猎手 Agent,记录它们的检查项,并用覆盖率评审员找出覆盖缺口。
  3. 候选漏洞验证(Candidate validation)——将每一个唯一的候选漏洞交给一个全新的验证者 Agent,尝试证伪它。
  4. 结构化输出(Structured output)——将 confirmed(已确认)、needs_validation(待验证)和 rejected(已驳回)三类记录写入 findings.json,并按 report-schema.json 进行校验。
  5. 独立记录核验(Independent record verification)——由全新的 Agent 核验最终的溯源声明。重大替换操作会再交给另一名独立验证者复核。
  6. 目标中立报告(Target-neutral reporting)——基于已核验的记录和覆盖率清单,生成 REPORT.md、FINDINGS-DETAIL.md 和 NEEDS-VALIDATION.md。

主 Agent 在创建覆盖率清单后以及此后每次更新清单时,都会运行 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 类目标的提示注入、Agent/工具与输出处理漏洞挖掘分类
WEB-PROTOCOL-AND-AUTH.md面向 HTTP 协议与认证目标的请求构造、缓存与认证协议漏洞挖掘分类
CLIENT-SIDE.md面向客户端/浏览器目标的 DOM 注入、消息信任、UI 重定向与原型污染漏洞挖掘分类
SUPPLY-CHAIN-AND-RELEASE.md依赖、CI、发布、签名、更新、插件与扩展漏洞挖掘分类
CLOUD-AND-DEPLOYMENT.mdIAM、基础设施即代码、容器、Serverless、入口与运行时配置漏洞挖掘分类
PROTOCOLS-RPC-AND-MESSAGING.mdRPC、序列化、队列、代理、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.jsonfindings.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 可查看 Agent 选择与非交互式选项。

使用方法

在你要审计的代码库中启动编码 Agent(或让 Agent 指向该代码库),然后让它执行安全审计:

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/<仓库名>/run-<N>。只有当你显式选择了一个被版本控制忽略的目录时,工作流才会在目标仓库内部写入文件。

环境要求

  • 一个编码 Agent,其模型需支持工具调用和并行子 Agent
  • Node.js,用于运行零依赖的漏洞发现和覆盖率清单校验器
  • 操作系统层面强制隔离的沙箱,用于运行由目标代码控制的构建、测试、进程、浏览器、模拟器、模糊测试器和测试样例。沙箱必须禁用外部网络、使用经过清理的白名单环境、强制执行资源限制,并且只允许向分配的临时路径写入。如果没有这些控制措施,工作流会将候选漏洞保持为 needs_validation 状态,而不会执行目标代码。

设计原则

  • 只确认已确立的边界突破。 将基于源码但被阻断的线索保留为 needs_validation,并标注其确切的未核实事实。
  • 对抗式验证。 检查漏洞的 Agent 永远不能是发现它的那个 Agent。
  • 严重程度必须对应实际影响。 严重程度 = 可能性 × 影响,而不是偏离了某张检查清单就算漏洞。
  • 深度防御的缺口不等于漏洞。 如果 A 层已经能阻止攻击,那么 B 层的缺失只是加固建议,不是漏洞。
  • 多次运行可提升覆盖率。 在我们的测试运行中,单次运行大约只能发现反复运行总漏洞数的一半。

联系方式

有问题、反馈,或想交流 AI 驱动安全工具的心得:security-ai-research@cloudflare.com

许可证

MIT —— 详见 LICENSE。