Cloudflare开源security-audit-skill,编码代理安全审计的六阶段校验流程

Cloudflare 开源了名为 security-audit-skill 的技能库,旨在让 AI 编码代理按结构化流程执行代码安全审计。项目通过侦察、狩猎、验证、输出、再验证与报告六个阶段,结合覆盖...

人工智能

Cloudflare 近期在 GitHub 开源了一套名为 security-audit-skill 的技能文件集,目标明确:将 AI 编码代理转化为可信赖的安全审计员。该项目并非传统意义上的代码扫描工具,而是一套面向大语言模型(LLM)代理的“工作流规范”,通过标准化流程与自动化校验机制,解决 AI 审计中常见的漏报与误报问题。

项目仓库创建于 2026 年 6 月,截至当前已有 34,342 颗星标,当日新增 1,865 星,Fork 数达 2,148,活跃度持续上升。其核心并非大量代码,而是以 Markdown 文档为主干、辅以少量 JavaScript 校验脚本构成的流程框架。README 中直言不讳:这是 Cloudflare 内部漏洞发现系统(audit harness)的“种子技能”,后续更复杂的内部系统正是由此演化而来。

为何需要结构化审计流程?

AI 代理参与代码审计面临两大现实挑战:一是“走马观花”——仅扫描部分路径即草率下结论;二是“自我背书”——发现漏洞后由同一代理自行确认,缺乏制衡。若未加约束,此类系统可能生成看似专业实则不可靠的报告,反而干扰人工复核。

security-audit-skill 的应对策略是“拆解任务 + 多方制衡”。它将整个审计过程划分为六个明确阶段:侦察(Reconnaissance)、狩猎(Hunting)、验证(Validation)、输出(Output)、再验证(Re-verification)与报告(Reporting)。每个阶段产出结构化文件,并作为下一阶段的输入,形成闭环校验链。

关键机制解析

1. 覆盖账本(Coverage Ledger)

审计的第一步是建立对代码库的全局认知。RECONNAISSANCE.md 引导代理生成 architecture.md,梳理系统架构、信任边界与输入面;随后触发 validate-coverage-ledger.cjs 脚本,校验生成的 coverage-ledger.json 文件结构是否合规。

该账本记录每个代码单元(如函数、模块)的审查状态:已覆盖、部分覆盖或未覆盖。后续运行可基于此账本分配新任务,避免重复劳动。项目指出,单次运行平均仅能发现累计多轮运行所识别漏洞总数的一半左右,因此支持“累加式运行”——后续轮次继承前序的覆盖记录与发现列表,实现渐进式深度审计。

2. 孤立猎手(Isolated Hunters)

进入第二阶段“狩猎”时,系统会启动多个互不通信的代理实例(即“孤立猎手”),依据覆盖账本分配未查区域,分头搜索漏洞。每个猎手的检查结果会被写入共享账本,确保整体覆盖无遗漏。这一设计有效防止多个代理集中攻击同一热点模块而忽略冷门路径。

3. 全新验证者(Fresh Verifier)

这是整套流程中保障结论可信度的核心机制。每当产生一条候选漏洞(标记为 needs_validation),系统不会交由原猎手复核,而是启动一个全新初始化的代理实例,以中立立场尝试反驳该发现。只有经此“反证”仍无法推翻的条目,才被标记为 confirmed。

该机制直接回应了 LLM 常见的“确认偏误”问题:模型倾向于维持自身初始判断。通过强制引入外部视角,显著降低误报率。

4. 结构化输出与 Schema 校验

模块与主链路图:展示 validate-coverage-ledger、validate-findings、report-schema 等组件间的校验依赖关系

所有发现必须写入 findings.json,且仅允许三类结论字段:confirmed、needs_validation、rejected。其格式严格遵循 report-schema.json 定义的 JSON Schema。每次写入或替换该文件,均会自动触发 validate-findings.cjs 脚本进行深度校验。

该脚本中的 deepEqual 函数尤为关键:它不仅比对字段名与值,还递归校验嵌套对象结构一致性,防止因字段顺序错乱或类型隐式转换导致的格式漂移。这种“机器可验证”的设计,使整个流程摆脱对人工审阅格式的依赖。

流程如何落地?

整个技能库以五份核心文档组织:

  • RECONNAISSANCE.md:定义架构映射与初始覆盖范围生成规则;
  • HUNTING.md:编排多猎手分工逻辑与验证前置条件;
  • VALIDATION-AND-REPORTING.md:整合后三阶段,含候选验证、结构化输出、独立记录核验与中立报告生成;
  • coverage-ledger.json 与 findings.json:作为状态与结果的持久化载体;
  • report-schema.json:唯一权威的输出格式定义。

值得注意的是,所有文档均为人类可读的 Markdown,便于团队理解与迭代;而校验脚本则提供机器级保障,二者协同构建“人机共治”的审计基础设施。

实践价值与行业意义

终端命令示例:展示如何通过 npx skills add 添加该技能并执行 security-audit

在 DevSecOps 加速落地的背景下,自动化安全左移已成为主流趋势。传统 SAST(静态应用安全测试)工具虽能快速扫描,但对业务逻辑漏洞、权限绕过、供应链风险等复杂问题覆盖有限。而 LLM 驱动的代理具备理解上下文与推理能力,理论上可弥补这一缺口——前提是其行为可预测、结果可验证。

security-audit-skill 提供了一种轻量但严谨的落地路径:它不要求重写现有 CI/CD 流水线,只需将代理调用封装为标准化技能步骤,即可嵌入现有工程体系。例如,可在 PR 合并前触发一轮“侦察+狩猎”,再由安全团队介入复核 confirmed 条目;或在季度渗透测试前,运行多轮累加审计以生成高置信度待办清单。

该项目采用 MIT 许可证,鼓励社区贡献与二次开发。目前 open issue 有 72 个,涵盖 schema 扩展、多语言支持、与特定框架(如 Next.js、Dockerfile)集成等方向,显示出较强的演进潜力。

从技术演进角度看,这标志着安全自动化正从“规则匹配”迈向“流程可控的智能协作”。过去十年,SAST 工具追求的是覆盖率与速度;未来十年,焦点将转向“可信度”与“可解释性”——而 Cloudflare 此举,正是这一转向的早期实践样本。

目前,该项目尚未集成具体语言解析器或漏洞模式库,其价值在于提供了一个可扩展的“审计操作系统”内核。开发者可基于此框架,接入自定义的语义分析模块、威胁建模模板或合规检查项,构建适配自身技术栈的专属审计流水线。

随着更多企业尝试将 LLM 引入安全流程,类似 security-audit-skill 的标准化工作流将变得愈发重要。它不替代人工安全专家,而是为其提供更高质量的初筛输入,从而释放人力聚焦于高阶威胁建模与红蓝对抗演练。

项目地址:https://github.com/cloudflare/security-audit-skill