post cover

Claude Code 源码泄露:一场本不该发生的 Source Map 事故


Claude Code 源码泄露:一场本不该发生的 Source Map 事故

2026年愚人节前一天,Anthropic 旗下明星编程工具 Claude Code 收到了一个不太友善的”礼物”——512,000 行完整 TypeScript 源码被人从 npm 包里直接捞了出来,明晃晃地摊在所有人面前。

更讽刺的是,这不是被黑客攻破的,是自己构建流程没配置好导致的。属于是”门没锁好,不是被撬开的,是门压根儿就没关”。


事件回顾

3月31日,安全研究员 Chaofan Shou(FuzzLand)在检查 Claude Code 最新版 npm 包时发现:

  • 包内有一个体积达 57MB 的 cli.js.map 文件
  • 这个 source map 指向了一个 R2 存储桶链接,内含 1,906 个 TypeScript/TSX 源文件
  • 任意人下载 npm 包后,无需任何反编译,直接拿到完整原始代码

消息一出,GitHub 上迅速出现归档,全网 fork。Anthropic 紧急推送更新移除 source map、删除早期版本,但代码已经永久留存。


根本原因:Source Map 本不该出现在生产包

说清楚这个问题需要一点前端构建知识。

Source Map.map 文件)是 JavaScript 构建过程中生成的调试文件,作用是将压缩混淆后的代码映射回原始源码,方便本地调试。比如线上报了个错,你希望通过 source map 看到原始代码哪里出了问题。

问题在于:source map 文件只应该留在本地开发环境或内部 CI/CD 流程里,绝对不应该被打进生产发布包,更不应该上传到 npm registry

Anthropic 的这次失误,简单说就是构建工具配置有疏漏,.npmignore 或者构建脚本没有正确排除 .map 文件,导致 source map 跟着代码一起发了出去。

这是一个极其基础、极其不应该的错误。不是安全攻防,是 DevOps 质量管控问题。


讽刺的是:这不是第一次

2025年2月,Claude Code 早期版本就因为同样的 source map 问题泄露过一次源码。彼时 Anthropic 迅速删除了旧版本并修复了配置。

然后,2026年3月26日,Anthropic 又因为 CMS 配置错误 泄露了 Claude Mythos 模型信息和约 3,000 份未公开资产。

3月31日,源码再次因 source map 配置失误泄露。

5天内两次重大泄露,这就不是偶发了,是系统性流程存在隐患。


泄露了什么

根据网友对源码的分析,暴露内容包括:

类别详情
功能开关35个编译时功能标志(Feature Flags)
环境变量120+ 个未公开的环境变量
内部命令26 个未公开的斜杠命令(如 /teleport/dream/good-claude
项目代号”Tengu”(天狗)被确认为 Claude Code 内部项目代号
BUDDY 系统类似 Tamagotchi 的 AI 伴侣系统,有抽卡、闪光变种等机制
Undercover Mode防止 Anthropic 员工在公开仓库贡献代码时意外泄露内部信息的特殊模式

影响几何

对安全社区——这次泄露等于给安全研究员提供了一份完整的 Claude Code 内部地图。120+ 环境变量和 35 个功能开关意味着外界可以精确知道哪些功能还在开发中、哪些尚未公开,以及产品的下一步方向。对竞争对手来说,这份情报价值不小。

对 Anthropic——连续的安全事故会让企业客户对 Anthropic 的运维能力产生质疑。尤其是 Claude Code 主要面向开发者市场,这个群体对代码安全和工程规范格外敏感。Anthropic 一直强调的”安全第一”人设,此刻多少有些尴尬。

对整个行业——npm 作为全球最大的 JavaScript 包仓库,一次配置失误就能让 51 万行代码流出去,说明 major AI 厂商在工程化基础设施建设方面,可能远没有其在模型能力上那么领先。


写在最后

愚人节这天看到这条新闻,本以为是什么节假日的玩笑。但看多了之后,只剩下一个感受:

一家公司在模型能力上已经摸到了 AGI 的边,但在最基本的软件发布流程上,还犯着”source map 没排除”这种大二学生才会犯的错误。

技术卓越和工程规范是两码事。Anthropic 是时候给自家的 DevOps 流程也做一次安全审计了。


Anthropic 于 2026年3月31日 紧急修复了 source map 外泄问题,相关 npm 版本已更新。