Anthropic发布开源框架助力AI漏洞发现
速览
Anthropic近日发布了一款开源框架,旨在利用人工智能技术自动化地发现和识别软件系统中的安全漏洞。该工具通过集成大模型能力,能够更高效地扫描代码库,帮助开发者提前定位潜在风险。此举有望显著提升软件供应链的安全性,降低人工审计成本。
AI 深度解读
Anthropic 开源 AI 漏洞发现框架深度解读
背景
Anthropic 在推出 Claude Mythos Preview 并与多家组织的安全团队进行合作后,总结出了一套利用 Claude 进行自主漏洞发现与修复的最佳实践。基于这些实战经验,Anthropic 开源了一个名为 defending-code-reference-harness 的参考实现框架。
该框架旨在展示如何利用 Claude 构建一个完整的“侦察(Recon)→ 发现(Find)→ 验证(Triage)→ 报告(Report)→ 补丁(Patch)”的自动化漏洞处理闭环。需要注意的是,Anthropic 明确表示该仓库目前不再维护且不接受外部贡献。它仅作为一个参考实现,帮助用户理解如何构建自己的漏洞发现流水线。
对于寻求托管解决方案的企业,Anthropic 提供了 Claude Security 产品。这是一个托管服务,能够跨多个项目扫描源代码中的漏洞,通过多阶段验证管道降低误报率,并支持漏洞生命周期的管理(包括初步筛选、修复验证和快速修复生成)。
核心内容
该开源框架的核心价值在于提供了一个可定制、可复用的自动化漏洞挖掘流水线原型。它允许开发者利用 Claude API(包括 Bedrock、Vertex 或 Azure 版本)来构建自定义的安全测试流程。
1. 架构与组件
框架主要包含两个部分:交互式技能(Skills)和自主参考流水线(Reference Pipeline)。
-
Claude Code Skills(交互式技能): 这是一组用于交互式操作的命令,适合手动控制和快速上手:
/quickstart:快速入门指南。/threat-model:构建威胁模型。/vuln-scan:执行静态扫描。/triage:对发现的结果进行分类和去重。/patch:生成候选修复补丁。/customize:自定义流水线逻辑。 这些技能主要对文件进行读写操作,安全性较高,无需沙箱环境即可运行,但建议在 Claude Code 中交互式地批准每一次工具调用。
-
Harness(自主参考流水线): 这是一个自动化的参考流水线,专门配置用于通过 Docker 和 ASAN(AddressSanitizer)发现 C/C++ 内存漏洞。
- 定位:它不是最终产品,而是一个参考实现。其通用结构、提示词(Prompts)和沙箱机制是可复用的,但无法直接适用于所有代码库。
- 安全性:由于流水线会执行目标代码,因此必须在 gVisor 沙箱中运行,除非显式覆盖。
- 工作流程:
recon → find → verify → report → patch。
2. 实施路径:从交互式到自动化
Anthropic 建议安全团队采取“小步快跑”的策略,第一天专注于端到端的闭环体验,第二天过渡到自动化运行。
Day 1:交互式闭环体验 目标是通过交互式技能建立威胁模型、运行静态扫描、分类结果并起草修复方案。
- 步骤 1:构建威胁模型(
/threat-model),明确攻击目标。 - 步骤 2:基于威胁模型运行静态扫描(
/vuln-scan)。注意:此阶段仅进行源码静态审查,不涉及编译或运行,因此非演示代码可能会产生较多误报。 - 步骤 3:验证、去重和排序发现的结果(
/triage)。 - 步骤 4:为已验证的发现生成候选修复补丁(
/patch)。 - 输出:生成
THREAT_MODEL.md、VULN-FINDINGS、TRIAGE和PATCHES目录。
Day 2:自动化流水线运行 目标是在已知存在漏洞的开源库上运行完整的自主流水线。
- 环境准备:
- 安装 Python 虚拟环境及依赖。
- 运行
scripts/setup_sandbox.sh安装 gVisor 并构建代理镜像(需要 Docker)。 - 配置
ANTHROPIC_API_KEY或 OAuth Token。
- 执行流水线:
bin/vp-sandboxed run drlibs --model <model-id> --runs 3 --parallel --stream --auto-focus - 生成补丁:
bin/vp-sandboxed patch results/drlibs/<timestamp>/ --model <model-id> - 结果:流水线会在
results/目录下生成可复现的崩溃记录、可利用性报告和候选补丁。使用--stream标志可以在几分钟内看到初步报告。
3. 流水线底层机制详解
自主流水线内部包含七个关键阶段,专门针对 C/C++ 内存安全漏洞设计:
-
Build(构建): 利用目标项目的
Dockerfile自动构建包含 ASAN(内存错误检测器)的 Docker 镜像。 -
Recon(侦察): 一个轻量级代理在网络隔离的容器中读取源代码,并提出“分区”建议。例如,识别出 N 个独立的输入解析子系统,以便后续的发现代理可以并行探索不同区域,避免收敛于同一个漏洞。若未启用
--auto-focus,则使用config.yaml中的focus_areas。 -
Find(发现): N 个代理并行运行,每个代理在独立的隔离容器中工作。代理读取源码,构造畸形输入,并运行 ASAN 二进制文件,直到某个输入连续 3 次导致崩溃。
-
Verify(验证): 一个独立的“评分代理”(Grader Agent)在未被“发现代理”触碰过的全新容器中复现每个崩溃。只有概念验证(PoC)从发现代理传递到评分代理,确保验证的独立性。
-
Report(报告): 将验证后的漏洞整理成报告。
-
Patch(补丁): 为已验证的崩溃生成和验证修复代码。
-
Sandboxing(沙箱隔离): 所有自主代理均在 gVisor 容器中运行,出站流量严格限制为仅允许访问 Claude API,以防止潜在的安全风险。
关键要点
- 非维护状态:该开源仓库目前处于“参考实现”状态,Anthropic 不再维护代码,也不接受社区贡献。企业若需生产级服务,应使用 Anthropic 的 Claude Security 托管产品。
- 安全优先:
- 交互式技能(Skills)仅涉及文件读写,风险较低,无需沙箱。
- 自主流水线(Harness)涉及代码执行,必须在 gVisor 沙箱中运行,默认拒绝在沙箱外执行。
- 所有代理的出站网络被严格限制,仅允许与 Claude API 通信。
- 适用范围:
- 参考流水线默认针对 C/C++ 内存漏洞(通过 ASAN 检测)。
- 框架结构、提示词和沙箱逻辑是可复用的,但需要用户自行调整以适配其他语言或漏洞类型(通过
/customize命令)。
- 误报处理:
- 静态扫描(Day 1)可能产生较多误报,特别是在非演示代码上。
- 自动化流水线(Day 2)通过执行验证(Execution-verified findings)来减少误报,但
triage技能可能会将测试代码或故意暴露的漏洞(如 canary target)标记为误报,需用户仔细审查。
- 最佳实践建议:
- 不要花费数月时间设计完美的流水线,建议从 Day 1 的小规模交互式测试开始,随着经验积累逐步构建。
- 利用
--parallel和--auto-focus等参数优化并行发现和聚焦扫描效率。 - 始终审查并批准工具调用,特别是在非沙箱环境中。
意义与影响
Anthropic 开源此框架具有多重行业意义:
- 降低 AI 安全工具的使用门槛:通过提供
