Heidi Labs
GitHub TrendingGitHub Trending 项目约 8 分钟3,323 字

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.mdIAM、基础设施即代码(IaC)、容器、无服务器、入口与运行时配置搜寻类别
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 查看智能体选择和非交互式选项。

用法#

在你想要审计的代码库中(或指向该代码库)启动编码智能体,然后要求它做安全审计:

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。

关于#

一个用于多阶段安全审计的编码智能体技能,可产出经过独立验证、机器可读的发现。