乐于分享
好东西不私藏

Claude Code 源码大泄露:一个 .map 文件引发的蝴蝶效应

Claude Code 源码大泄露:一个 .map 文件引发的蝴蝶效应

安全事件分析 · 2026.03.31

Claude Code 源码大泄露

一个缺失的 .npmignore 配置,让 Anthropic 的 51 万行产品核心源码悉数暴露于公众视野

事件摘要:2026 年 3 月 31 日,@anthropic-ai/claude-code npm 包意外附带 59.8 MB Source Map 文件,导致约 1,900 个 TypeScript 文件完整泄露。安全研究员 Chaofan Shou 首先发现并公开。这是 Anthropic 一周内第二次重大信息泄露。

一、Source Map 是什么?为何如此危险?

Source Map(源码映射文件)是 JavaScript/TypeScript 构建工具链生成的调试产物。它将压缩混淆后的生产环境代码映射回原始源码,使开发者可以在浏览器 DevTools 中看到可读的代码结构。这类文件只应存在于内网调试流程中,一旦随 npm 包公开发布,等同于将整个未混淆的源码拱手相让。

文件类型
作用 / 风险
bundle.js.map
还原完整 TypeScript 源码
bundle.js

(含 sourceMappingURL)
指向 .map 文件位置,间接泄露
内嵌 inline source map
源码 Base64 编码内嵌于 JS 文件

二、泄露原因:工具链陷阱与人为失误的叠加

直接原因:`.npmignore` 中未排除 `*.map` 文件,导致 59.8 MB 调试产物随包发布。

深层原因:Claude Code 使用 Bun 作为构建工具。2026 年 3 月 11 日,Bun 项目已有人提交 Issue oven-sh/bun#28001,指出 Bun 在 production 模式下会静默生成 Source Map,与其官方文档不符。工程师认为 production 构建不会产生 `.map`,而 Bun 默默生成了它。

警示:任何使用 Bun 构建并发布 npm 包的项目,都应立即运行 npm pack --dry-run 检查输出文件列表,确认无意外 .map 文件被打包。

三、源码中藏着什么秘密?

51 万行代码被社区研究者逐行分析,挖掘出了一系列令人震惊的内部实现细节:

🔍 隐身模式(undercover.ts)

当 Claude Code 在非 Anthropic 内部的公开代码仓库中操作时,该模式剥除所有 Anthropic 内部痕迹(内部代号 “Capybara”、”Tengu” 等),并指示模型不得提及公司内部信息。可通过环境变量 CLAUDE_CODE_UNDERCOVER=1 启用。争议:Anthropic 员工向开源项目提交 AI 辅助代码时,可主动隐藏 AI 参与痕迹,无任何透明度披露机制。

⚔️ 反蒸馏假工具(ANTI_DISTILLATION_CC)

claude.ts 第 301–313 行的标志位,启用后在 API 请求中注入虚假工具定义,专门污染竞争对手用于蒸馏 Claude 行为的训练数据。讽刺之处:该机制现已公开,竞争对手只需过滤含 anti_distillation 字段的训练样本即可绕过。

🤖 KAIROS:未公开自主守护进程

代码库中 150 余处引用,是迄今最接近”真正自主 Agent”的产品形态:   • 持久化后台 Agent,定期接收 <tick> 提示,无需用户触发自主决策   • 订阅 GitHub Webhook,主动监听仓库变更   • 子功能 autoDream:用户闲置时后台整合记忆,合并观察、消除矛盾,具备只读 Bash 访问权限   当前所有功能标志均编译为 false,尚未公开发布。

📋 其他关键发现

   • 情绪检测 Regex:用正则表达式(而非 LLM)检测用户是否咒骂工具,折射成本取舍   • 内部模型代号:Capybara = Claude 4.6,Fennec = Opus 4.6,Numbat = 未发布新模型   • 44 个隐藏功能:完全实现但未公开,全部编译为 false   • 完整 System Prompt:所有内部提示词和行为约束以纯文本形式暴露

四、代码扩散:仓库复现竞赛

消息公开后,源码在网络上的扩散速度远超 Anthropic 的应对速度:

  • Kuberwastaken/claude-code : 最受关注的复现仓库,含 Rust 移植版与架构分析
  • 原始 TypeScript 镜像 24 小时内被 fork 41,500+ 次,Anthropic 提交 DMCA 但效果有限
  • 韩国开发者 Sigrid Jin 当晚以 Python 重写核心架构,项目 claw-code 获 star 速度据称打破 GitHub 历史纪录
  • 专门收录 Claude 全部内部 System Prompt 的仓库成为 prompt 工程师”参考手册”

五、防御建议

#
检查项
操作
1
检查 .npmignore
确保 *.map 被排除
2
Bun 用户检查构建输出
手动检查 dist/ 目录
3
CI 加入发布前审计
npm pack --dry-run
4
Source Map 分离管理
仅上传至 Sentry 等内网错误追踪系统

结语:这不是某个工程师的粗心,而是现代软件发布流程复杂度在具体场景下的系统性失败。更值得关注的,是泄露内容本身揭示的信息:一个 AI 公司在追求产品竞争力时,选择了哪些技术路径,做出了哪些伦理取舍,又在背后悄悄构建着怎样的能力边界。源码比任何公关声明都要诚实。