写点什么

Anthropic 因 npm 源映射文件意外泄露 Claude Code 源码

  • 2026-04-10
    北京
  • 本文字数:2087 字

    阅读完需:约 7 分钟

安全研究员 Chaofan Shou 于 3 月 31 日发现,Anthropic Claude Code CLI 工具完整的 TypeScript 源代码竟以明文形式出现在公共 npm 注册表中。@anthropic-ai/claude-code 2.1.88 版本在发布时意外包含了一个不应存在的源映射文件。Chaofan 在 X 平台上发布这一发现后,相关内容迅速获得数百万浏览量。短短数小时内,完整代码库已被归档至多个 GitHub 仓库,并迅速获得数万星标和分叉。

Anthropic 在向 CNBC 发表的声明中称,这是“由人为错误导致的发布打包问题,而非安全漏洞”,并表示未涉及任何客户数据或凭证,并正在采取措施防止此类问题再次发生。

究竟出了什么问题?一个 .map 文件——这种用于将压缩后的生产代码映射回原始源代码的调试文件——被打包进了发布的 npm 包中。该文件指向托管在 Anthropic 自有 R2 云存储桶上完整、未混淆的 TypeScript 源码,可直接以 ZIP 压缩包形式下载。Claude Code 使用的是 Bun 运行时,默认会生成源映射,除非显式禁用。防范此类问题并不复杂:在 .npmignore 中添加 *.map,在 package.json 的 files 字段中显式设置白名单,或在发布前执行 npm pack --dry-run 对即将发布的内容进行审计。

正如开发者兼安全分析师 Gabriel Anhaia 在 DEV Community 上发表的分析文章中所写:

“.npmignore 或 package.json 中一个配置有误的 files 字段就可能导致全部内容暴露。”

值得注意的是,据报道这并非 Anthropic 首次在 npm 包中附带源映射文件。2025 年的早期版本也曾包含过完整的源映射,随后被从注册表中撤回。

需要说明的是,此次泄露的是 Claude Code CLI 工具,而非 claude.ai 网页应用或 LLM 模型本身。正如一位 Reddit 网友评论所言:

“严格来说,这并非世界末日,毕竟前端客户端本就可被逆向工程,但完整且未混淆的源代码泄露仍是重大失误,因为其中包含了极为关键的系统提示词、上下文/查询/RAG 引擎设计、协调器/编排逻辑,以及整体智能体架构,这几乎就是一份如何设计智能体的参考手册。”

并非所有人都认为损失会像新闻所暗示的那么严重。另一位评论者反驳道:

“真正想要这些内容的人早就已经拿到了。相关提示词本来就以明文字符串的形式出现在可执行文件中,泄露的完整源代码也一直能通过压缩后的 JS 文件获取。”

由于 Claude Code 是与运行时捆绑打包的 JavaScript 应用,压缩后的源代码在技术上一直处于可访问状态;不过,带有完整注释的 TypeScript 代码(包含原始变量名、注释与模块结构)确实造成了程度截然不同的信息泄露。

代码库揭示了一个远比 Claude Code CLI 所呈现的更为复杂的系统。源码包含约 1900 个 TypeScript 文件、超过 51.2 万行代码,已在 DEV CommunityHacker News 及一份详细的 GitHub 仓库分析中被广泛探讨研究。相关发现包括:约 40 个独立工具,各自拥有权限控制机制;一个约 4.6 万行的查询引擎,负责处理 LLM API 调用、流式传输、缓存与调度;支持多智能体协同的并行工作智能体生成与管理功能;基于 JWT 认证的 IDE 桥接集成;以及一套持久化内存系统。

源码中还隐藏着多项通过功能开关控制的未发布的特性。KAIROS 是一种自主守护进程模式,作为后台智能体运行,在用户空闲时执行记忆整合。ULTRAPLAN 用于将复杂的规划任务交由云基础设施处理。BUDDY 是一款电子宠物风格的 AI 伴侣,有物种、稀有度等级和属性设定。内部模型代号也清晰可见:Capybara 对应 Claude 4.6 变体,Fennec 对应 Opus 4.6 变体。

有一处细节引发了格外关注:有一个叫作“Undercover Mode”(卧底模式)的子系统,用于避免 Claude Code 在向公共开源仓库提交代码时泄露内部信息,通过注入指令引导模型不引用内部代号、未发布版本号、内部 Slack 频道,也不透露自己是 AI 的事实。颇具讽刺意味的是,Anthropic 专门搭建了整套子系统防止 AI 泄露内部细节,却因一次构建配置疏忽直接暴露了整个代码库。

一位 Reddit 评论者着重指出了此次泄露的编排逻辑所存在的安全隐患:

“如果知道提示词注入防御是在什么地方实现的和实现的方式,那么攻击者便能更轻易地找到绕过的方法。一旦掌握系统提示词,攻击者无需猜测前置内容就可以直接构造措辞精准的指令来操控模型。”

雪上加霜的是,同一天还发生了另一起供应链攻击:axios 包遭入侵,该事件由 StepSecurity 首次披露。在 UTC 时间 3 月 31 日 00:21 至 03:29 期间,包含远程访问木马的恶意 axios 版本(1.14.1 和 0.30.4)被发布至 npm。由于 Claude Code 依赖 axios,任何在该时间段内安装或更新该工具的用户都可能引入了已被感染的依赖项。开发者应该检查一下锁文件中是否存在上述的特定版本或依赖项 plain-crypto-js。

对于将 Claude Code 作为开发基础设施依赖的企业团队而言,此次事件引发了诸多令人不安的问题。据报道,这是第三次出现源映射暴露问题。此外,此次事件距离即将推出的 Claude Mythos 模型在公开可访问的数据缓存中被发现还不到一周时间,成为短期内第二起重大信息泄露事件。Anthropic 尚未公开披露具体的补救措施,仅表示已下架受影响的 npm 版本。

【声明:本文由 InfoQ 翻译,未经许可禁止转载。】

查看英文原文:https://www.infoq.com/news/2026/04/claude-code-source-leak/