这是一个把编码智能体变成安全审计员的技能(security-audit-skill),它编排彼此隔离的智能体依次完成侦察、覆盖驱动搜寻、候选验证、结构化输出、独立记录核查和目标中立的报告。该技能是 Cloudflare 漏洞发现工具链的起点,后者后来发展为多阶段、面向全机队的系统,而这个技能正是它演化出的单仓库起点。
正文
这是一个让编码智能体化身安全审计员的技能。它调度隔离的智能体,依次完成侦察、基于覆盖率的搜寻、候选验证、结构化输出、独立记录核查,以及目标中立的报告撰写。
该技能催生了 Cloudflare 的漏洞发现框架(详见博客 Build your own vulnerability harness)。框架后来发展成多阶段、全集群的系统,而这个技能便是它演化的单一仓库起点。
功能说明
该技能以六个阶段运行结构化审计:
- 侦察——在
architecture.md与coverage-ledger.json中梳理架构、信任边界、输入面、已有证据与确定性覆盖率。 - 基于覆盖率的搜寻——依据覆盖率台账分派隔离的搜寻员,记录检查项,并用覆盖率评审员找出盲区。
- 候选验证——为每个独立候选缺陷指派全新的验证员尝试证伪。
- 结构化输出——将
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、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 | 三种 verdict 的 JSON 模式 |
| validate-findings.cjs | 阶段 4、5 的零依赖校验器 |
| validate-findings.test.cjs | 校验器测试 |
| validate-coverage-ledger.cjs | 阶段 1–5 覆盖率台账零依赖校验器 |
| validate-coverage-ledger.test.cjs | 台账校验器测试 |
安装
使用 Skills CLI 安装:执行 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-skill/<repo-name>/run-<N>。工作流仅在显式选定版本控制忽略的目录时才在目标仓库内写文件。
要求
- 支持工具调用与并行子智能体的编码智能体
- 运行零依赖校验器所需的 Node.js
- OS 强制沙箱:用于目标控制的构建、测试、进程、浏览器、模拟器、模糊测试与测试件,须禁外网、用净化允许环境、限资源、仅写指定临时路径。缺这些控制时,工作流将线索保持为
needs_validation而不执行目标代码。
设计原则
- 仅确认已确立的边界失效。 有源头支撑但受阻的线索作为
needs_validation保留未解事实。 - 对抗性验证。 检查发现的智能体绝不可能是发现它的那个。
- 严重度需有影响。 由可能性 x 影响决定,而非背离检查表。
- 纵深防御缺口不是漏洞。 若 A 层挡住攻击,缺 B 层只是加固建议。
- 多次运行提升覆盖率。 测试运行中,单次运行约发现重复运行总发现量的一半漏洞。
联系
关于 AI 驱动安全工具的疑问或交流,联系 security-ai-research@cloudflare.com
许可
MIT 许可。
评论
社区普遍吐槽相关审计技能消耗海量 token 并污染上下文窗口,同时围绕如何合理组织技能以降本增效和规避模型限制形成了实操经验分享。
吐槽 token 消耗惊人且易白白浪费
- 用户反映在中型代码库上运行审计轻易烧掉上百万 token 却无实质产出,对成本表达不满(较多人) > 我在一个中等规模的代码库里白白扔了上百万 token。(@drchaim)
认为 Cloudflare 技能过多导致上下文窗口被污染应合并
- 有用户直接向平台方喊话,指出分散的技能严重占用上下文,建议整合为单一入口路由以提升效率(较多人) > 你们该把所有技能合并成一个来统一路由,现在这样实在太污染上下文了。(@prodigycorp)
建议剥离安全研究框架以避免模型拒答
- 安全从业者提醒,显式将任务标为安全研究常触发头部模型的防护性拒绝,按 bug 类型分设技能再汇总发现更为可行(高赞) > 把审计明确定位为安全研究有时会吃闭门羹,拆成 bug 类技能再加一个汇总技能才好用。(@wslh)
有价值的补充
- 有团队分享了内部自建轻量审计技能的构建方法,便于在不同环境复现和调优,可作为缓解开销的替代方案(@gbrindisi)
- 有开发者对方案要求“操作系统强制沙箱”的初衷提出疑问,认为其必要性值得探讨(@9el)