Anthropic 已发布 Claude Code 的 Claude Security(Claude 安全)插件 Beta 版。该插件在现有的 Claude Code 会话中启动多智能体(Multi-Agent)漏洞扫描,检查代码仓库,然后将你选中的发现结果转换为补丁文件,供你自行审查和应用。Anthropic 在发布时强调了该工具的多功能性,指出它既可以对整个代码库进行全面扫描,也可以在提交前直接从终端检查代码变更。
插件新增了什么
根据官方文档,该插件新增了一条 /claude-security 命令,该命令会打开一个包含三项任务的菜单:
- 扫描代码库 —— 扫描整个仓库或其指定子集
- 扫描变更 —— 扫描分支差异、拉取请求差异或单次提交
- 建议补丁 —— 将报告中的发现结果转换为
.patch 文件
安装过程只需从Anthropic 官方市场执行两条命令:
/plugin install claude-security@claude-plugins-official
/reload-plugins
如果找不到市场,需先运行 /plugin marketplace add anthropics/claude-plugins-official。插件源代码公开在 claude-plugins-official 仓库,当前版本为 0.10.0。
扫描流水线的结构
扫描以动态工作流的形式实施 —— 这是一个 JavaScript 编排脚本,将工作分配给各子智能体。该脚本声明了六个阶段:
- 清单(Inventory):将仓库划分为不同的组件。每个顶层目录都必须被扫描,或者明确给出跳过原因。
- 威胁模型(Threat model):为每个组件配备一个建模器,生成入口点、数据汇聚点、信任边界以及研究人员必须通读的文件。
- 研究(Research):每个组件 × 类别单元格配备一名研究员。
- 查漏补缺(Sweep):填补研究矩阵未覆盖的空白。
- 小组审查(Panel):进行三视角对抗性核查,每个视角一名投票者。
- 对抗(Adversarial):仅在最高强度下执行:对勉强保留的发现进行重新小组审查,然后对每个幸存项进行红队攻击。
研究阶段针对四个固定类别进行:注入与输入(Injection-and-Input)、认证与访问控制(Auth-and-Access)、内存与不安全代码(Memory-and-Unsafe)、加密与秘密(Crypto-and-Secrets)。如果组件完全用内存安全语言编写,则取消内存与不安全代码视角,因此一个纯 Python 或 TypeScript 组件只会获得三个视角,而非四个。
一次扫描的运行规模由四个不同的强度级别决定:低(Low)、中(Medium)、高(High)、最大(Max)。根据所选级别,会有特定的阈值限制:组件最大数量在低和中强度下限制为 12 个,在高和最大强度下扩展到 24 个;矩阵单元格默认分配 1 名研究员,在高和最大级别下增加到 2 名;查漏补缺的次数则从低强度下的 0 次,增加到中强度下的 1 次,再到高和最大强度下的 2 次。在处理有限范围或较小差异时,该流程会简化为单研究员配置,而不是部署整个矩阵。这确保了评估严格与目标相称,同时保持相同的核查标准。
该系统采用模型分层智能体:编排器运行在 Opus 上,而仓库制图器和只读代码探索器运行在 Sonnet 上。此外,会话模型由研究员和核查员继承,扫描智能体严格限于只读工具。
一项发现如何才能被记入报告
这部分值得仔细了解。一个候选发现不是因为被某位研究员发现而直接记入报告,而是只有在通过小组审查后才能记入。
每个候选发现都会被交给三位独立核查员,分别从一个视角进行审查:可触达性(REACHABILITY)、影响(IMPACT)和防御措施(DEFENSES)。每位核查员都会返回一个结构化的裁决,即真阳性(TRUE_POSITIVE)或假阳性(FALSE_POSITIVE),并附上一两行指明决定性的文件:行号。保留的法定人数是 3 票中的 2 票。如果返回的投票者少于三人,该候选发现则完全不具备保留资格。
小组审查结果也限制了发现的置信度上限。全票一致(3/3)通过的小组审查允许置信度上限为高(High);2/3 法定人数则使其上限为中(Medium)。任何发现的置信度声明都不能超过其验证所获得的级别。
关键的是,计票工作是由报告渲染器用 Python 计算的,而非由生成发现的模型断言。修订标记的 verification.status 仅当投票记录证明报告中每一项发现都经过了小组审查时,才会被设为已核实(Verified);否则,它会标记为未核实(Unverified),并说明原因。这使得报告的严谨性记录变得可查,而不是单纯信任。
扫描写入磁盘的内容
每次扫描都会在仓库中写入一个带时间戳的 CLAUDE-SECURITY-/ 目录,其中包含三件制品:
CLAUDE-SECURITY-RESULTS.md —— 人类可读的报告。每项发现都带有一个 ID,如 F1,以及严重性(HIGH/MEDIUM/LOW)、置信度、CWE ID、确切的汇聚点行、影响、利用场景、前提条件和建议。
CLAUDE-SECURITY-RESULTS.jsonl —— 相同的发现,每行一个 JSON 对象。
CLAUDE-SECURITY-REVISION-.json —— 修订标记:记录了扫描的提交版本、强度、严重性计数以及验证的彻底程度。如果被扫描的树中包含未提交的更改,文件名会带上 -dirty 后缀。
该目录是扫描对检出树所做的唯一更改,并且它自带 .gitignore 文件,因此误操作 git add 不会意外将报告扫入提交。删除那个 .gitignore 文件,则可为审计追踪而提交报告。
补丁,及其必须满足的三项声明
补丁修复任务在仓库的一个临时克隆体中开发每个补丁,因此你的工作树和暂存区绝不会被触碰。然后,一个独立于编写补丁的智能体会审查暂存的差异,并针对此更改运行项目自身的测试套件。
只有在核查员能有信心的陈述以下三点时,才会写入补丁文件:此更改解决了该发现指向的问题,它引入了新的漏洞,并且其他行为没有改变 —— 其中,对代码接受的输入的任何改变都算作行为改变。任何声称修复漏洞却削弱安全性的更改,例如放宽的认证检查或禁用的测试,都会被自动拒绝。当核查员无法为所有三点作出保证时,你将得到一条简短的说明来解释原因,而不是补丁。
补丁以 F.patch 的形式存放在报告目录的 patches/ 文件夹中。补丁不会自动应用:
git apply CLAUDE-SECURITY-<timestamp>/patches/F1.patch
补丁说明会明确指出是否有仓库测试覆盖了修改的代码,并说明验证是基于代码审查而非测试执行。Anthropic 建议,每个补丁都应通过单独的拉取请求来应用。
要求、成本和信任模型
该插件需要付费计划,且 Claude Code 版本 v2.1.154 或更高,并在 /config 中启用动态工作流。还需要你的 PATH 路径中有 Python 3.9.6 或更高版本,称为 python3(仅使用标准库),并且需要 Git 用于变更扫描和补丁操作。支持 Linux、macOS 和 Windows,扫描会消耗你计划的令牌额度。
该扫描在你的会话中、用你的权限运行,本身不增加隔离性,意味着已提交的 .claude/ 设置、钩子和 CLAUDE.md 依然适用。尽管它将仓库内容视为数据而非指令,但这并不能防御恶意仓库;面对不熟悉的代码库,应使用 sandbox-runtime 进行沙盒化处理。
此外,扫描是非确定性的,不能替代传统的静态分析、依赖项扫描或代码审查。
在技术栈中的定位
| 阶段 |
工具 |
覆盖范围 |
| 会话中 |
安全指导插件 |
Claude 编写的代码中的常见漏洞,在同一会话中修复 |
| 按需,单次 |
/security-review |
对当前分支进行一次性安全审查 |
| 按需,深度扫描 |
Claude Security 插件 |
对仓库或差异进行多智能体扫描,独立审查发现并提供补丁 |
| 拉取请求时 |
代码审查(团队版,企业版) |
结合完整代码库上下文进行多智能体正确性和安全性审查 |
| 托管 |
Claude Security(企业版) |
对已连接的仓库进行托管扫描监控 |
| CI 中 |
你现有的 SAST 和依赖扫描器 |
特定语言规则、供应链检查、策略执行 |
关键要点
- Claude Security 插件在 Claude Code 会话中本地运行一个六阶段多智能体扫描,通过
/plugin install claude-security@claude-plugins-official 安装。
- 发现结果只有通过由三位投票者组成的对抗性小组审查(可触达性(REACHABI…...