Claude Code惊现高危供应链漏洞:npm恶意包可拦截OAuth令牌,企业SaaS平台面临持久化入侵风险
2026/6/8 15:20:35 网站建设 项目流程

AI编程助手正在重塑开发流程,但伴随而来的安全盲区却鲜有人提及。Mitiga Labs最近披露的一项研究发现,Claude Code存在一个足以让企业安全团队夜不能寐的漏洞——攻击者只需通过一枚看似无害的npm包,就能悄无声息地截获开发者的OAuth凭证,进而长期潜伏在Jira、Confluence、GitHub等核心SaaS平台内部。

这个问题的棘手之处在于,它并非依赖某个未公开的零日漏洞,而是巧妙利用了Claude Code自身的工作机制。攻击链路清晰得令人不安,且Anthropic方面已明确表示不会发布补丁。

攻击的入口比想象中更平常

整个故事的起点,是开发者再熟悉不过的场景:安装一个npm依赖包。Mitiga的研究人员演示了攻击者如何构造一个恶意npm包,其内部嵌入了postinstall生命周期钩子。这个钩子在包安装时静默执行,几乎不会触发常规安全检查。

它的目标只有一个文件——位于用户主目录下的~/.claude.json。这个配置文件控制着Claude Code所有MCP流量的路由规则,更致命的是,OAuth令牌以明文形式存储其中。

恶意钩子完成安装后,会预先在开发者常用的项目克隆路径中植入"信任"标记,将信任对话框强制设为true。这样一来,Claude Code后续打开这些目录时完全不会弹出任何提示,开发者几乎不可能察觉到异常。

当开发者正常连接Atlassian或GitHub的MCP服务器时,Claude Code会执行完整的OAuth授权流程。然而此时,令牌已经落入了攻击者的口袋。

OAuth令牌为何成了"黄金门票"

被截获的持有者令牌之所以极具价值,源于四个相互叠加的特性。

持久化是头号麻烦。这些令牌并非一次性凭证,它们附带刷新机制,攻击者只需拦截一次,就能在目标系统中维持长期访问。更夸张的是,令牌继承的是授权时授予的全部权限,无需每次调用时重新申请或缩小范围,攻击面天然就很广。

存储方式则暴露了根本性的设计缺陷。~/.claude.json以明文保存这些敏感凭证,文件权限与普通配置文件无异,任何能够读取该文件的角色都能直接拿走令牌。而在服务器端,请求源IP来自Anthropic的出口地址段,提供商端的审计日志看起来完全合法,根本无法从流量层面区分正常调用与恶意调用。

攻击链路拆解:五步完成持久化入侵

Mitiga将完整的攻击过程梳理为一条连贯的链路,整个过程不需要提权、不需要内存破坏、更不需要新的CVE编号。

恶意包通过npm生态进入开发者环境,postinstall钩子随即在~/.claude.json中植入信任标志。紧接着,攻击者写入一个sessionStart钩子,确保每次Claude Code加载受信任项目时都会自动触发。这个钩子会将合法的MCP服务器URL替换成攻击者控制的本地代理地址。当Claude Code读取被篡改的配置并尝试连接时,OAuth令牌便经由攻击者的基础设施完成传输。最阴险的是,这个钩子会在每次会话启动时重新确认恶意配置,即便受害者手动轮换过令牌,下一次刷新依然会经过代理,攻击者几乎能自动恢复访问。

这里有一个反直觉的发现:常规应急响应中的"轮换OAuth令牌"操作,在这种场景下反而会帮攻击者的忙。因为sessionStart钩子会在每次会话前重写配置,新的令牌生成后,下一次OAuth刷新照样会流经代理服务器。真正的修复前提,是在轮换凭证之前彻底移除钩子并清理配置文件。

防御者审查Atlassian或GitHub的审计日志时,看到的全是合法用户名、真实会话,以及归属Anthropic出口IP范围的地址。所有字段都挑不出毛病,唯一的异常藏在用户本地的~/.claude.json里——而大多数安全团队根本不会监控这个文件。

Anthropic的回应:暂无补丁计划

Mitiga在2026年4月10日向Anthropic提交了完整报告。对方次日确认收到,但于4月12日回复称该问题超出其工作范围,理由是攻击成立的前提是用户事先给予了同意。截至目前,官方没有发布任何补丁的计划。

这意味着企业安全团队必须独自承担全部的检测与响应责任,不能指望上游厂商在短期内提供修复。

企业安全团队现在该做什么

面对这种隐蔽且持续的威胁,被动等待显然不是选项。安全团队需要尽快落地几项针对性控制措施。

密切监控~/.claude.json的异常编辑,尤其是mcpServers段落的URL变更,以及本地代理地址的突然出现。npm安装后的生命周期脚本应当被视为头等供应链风险,在包到达开发者终端之前就必须完成注册表层面的脚本审计。

与Claude Code集成的OAuth令牌需要被纳入定期轮换计划,但轮换之前务必确认恶意钩子已被清除,否则只是给攻击者送新的令牌。SaaS审计日志中,凡是来自Anthropic出口IP范围但与用户已知活动模式不符的请求,都值得深挖。开发环境里新冒出来的本地代理进程,或者意料之外的OAuth刷新行为,都是值得立即告警的信号。

使用Claude Code和MCP集成的组织,建议立刻执行cat ~/.claude.json,逐一核对mcpServers下列出的每个URL是否为自己亲手配置的、可识别的合法端点。如果发现任何陌生的本地地址或可疑域名,应当立即隔离并展开溯源。

AI辅助开发工具的便利性毋庸置疑,但这项研究提醒我们:当开发环境与核心生产系统的边界越来越模糊时,供应链攻击的代价也在成倍放大。安全团队需要把目光从传统的网络边界,延伸到开发者本地的每一个配置文件和每一次包安装行为。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询