Claude Code源码泄露事件复盘:AI工具开发的工程安全警示
2026年3月31日,安全研究员Chaofan Shou在检查Anthropic发布的npm包时发现,一个名为cli.js.map的Source Map文件被意外包含在公开发布的包中。这个约60MB的文件可以完整解析出Claude Code CLI工具的全部TypeScript源码——约1906个文件、超过51万行代码。
事件迅速在技术社区传播。不到两小时,一个GitHub仓库便获得了超过5000 Star。Claude Code的源码以一种意想不到的方式完成了“开源”。
一、事件回顾
本次泄露的发现过程颇具戏剧性。Chaofan Shou在日常安全研究工作中,习惯性检查各公司发布的npm包是否包含敏感文件。当他解压Anthropic的Claude Code包时,发现了这个不该出现的.map文件。
Source Map是前端开发中用于调试的辅助文件,它能够将压缩后的代码映射回原始源码。一旦在生产环境中泄露,便等于将源码“裸呈”于公开环境。
从技术角度看,泄露的规模令人震惊:
|
|
|
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
这意味着,任何具备基本技术能力的开发者,都可以完整窥探Claude Code的全部实现细节。
二、泄露原因分析
事故原因并不复杂——一个典型的人为失误。
在npm包的发布流程中,开发者可以通过两种方式控制打包内容:一是在.npmignore文件中声明需要排除的文件/目录,二是在package.json的files字段中声明需要包含的文件/目录。Anthropic的工程师在发布时,疏忽了对Source Map文件的处理,导致cli.js.map被包含在最终的npm包中。
值得关注的是,这并非Anthropic首次犯下同样的错误。
2025年2月,Claude Code就曾因类似问题导致源码短暂泄露。彼时Anthropic通过删除旧版npm包并移除Source Map进行了修复。然而,不到一年后,同一个问题再次发生:
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
这暴露出CI/CD流程中存在系统性的管控缺失——同一个错误在同一家公司的同一产品线上发生了两次。
三、源码曝光了什么
泄露的源码为外界提供了一个难得的视角,一窥这个AI编程工具的内部架构。
从技术栈看,Claude Code采用了典型的现代CLI开发组合:
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
工具系统是源码中规模最大的部分。Claude Code内置了超过40个独立的工具模块,涵盖文件操作、Bash命令执行、代码搜索、Git操作等常见开发场景。每个工具模块都遵循统一的接口规范。
命令系统同样详尽。50多个斜杠命令覆盖了代码提交流程、代码审查、代码跳转等高频操作。
Feature Flag机制是另一个有趣的发现。源码中大量使用编译时常量折叠来控制功能开关,如VOICE_MODE、KAIROS、PROACTIVE等。这意味着Claude Code存在多个未发布的功能原型。
此外,源码还揭示了一个内部用户区分机制:通过检查环境变量process.env.USER_TYPE是否等于'ant'来识别Anthropic内部员工。
四、安全问题与潜在风险
对泄露代码的安全分析发现了若干值得关注的问题:
PLAN文件白名单匹配存在风险。 代码中使用startsWith方法做前缀匹配来验证PLAN文件的路径。如果攻击者能够控制PATH环境变量,可能存在绕过空间。当然,这需要满足特定的前置条件。
多级符号链接处理存在边界情况。 代码对符号链接的解析未完全覆盖所有路径组合,在极端情况下可能导致路径解析不一致。
WebSocket重连逻辑存在运行时差异。 代码库同时支持Node和Bun两个运行时,但重连机制在两个环境下的行为存在微妙差异。
⚠️ 说明:上述问题均来自对泄露代码的静态分析,未经实际验证。
五、影响评估
本次泄露对不同群体的影响并不相同。
对于普通用户而言,直接影响有限。 泄露的是CLI工具的客户端代码,不涉及:
-
• Claude的模型权重 -
• 训练数据 -
• 用户对话内容
对于Anthropic而言,影响是多维度的:
|
|
|
|---|---|
|
|
|
|
|
|
|
|
|
从商业数据看,Claude Code正处于变现阶段:
据业内估算,2026年初 Claude Code 的年收入已达到 OpenAI Codex 的 3-5 倍。考虑到Anthropic在2026年最新一轮估值中已达到约 750亿美元,Claude Code作为其核心产品之一的价值不言而喻。在此关键时刻发生这样的事故,对公司声誉的冲击不容忽视。
六、发布流程的规范建议
本次事件为AI工具开发者提供了多重警示:
1. 发布流程必须包含敏感文件检查
1 2 3 4 5 # 使用 npm pack --dry-run 预览打包内容npm pack --dry-run# 检查是否包含敏感文件npm pack --dry-run | grep -E "\.(map|env|config)$"
2. .npmignore和package.json的files字段需要精心维护
对于调试文件、Source Map、内部工具等敏感内容,应当明确排除在发布包之外。
3. CI/CD流水线中加入自动化检查
|
|
|
|---|---|
|
|
npm pack --dry-run
|
|
|
|
|
|
|
4. 工程管控需要系统性思维
同样的错误发生在同一家公司的同一产品线上,暴露出的是流程层面的系统性问题。建议建立独立的发布检查清单和定期安全审计机制。
七、冷静看待
客观而言,源码泄露本身并不等同于安全事故。Claude Code的核心价值在于Anthropic的模型能力和产品体验,而非代码本身。一个CLI工具的源码泄露,不会直接威胁到Claude AI的安全性。
但这次事件折射出的工程管理问题,值得整个行业警醒:
AI工具正在成为开发者工作流的重要组成部分,其安全性直接影响数以百万计开发者的生产环境。在追求模型能力突破的同时,工程基础能力的建设同样不可忽视。
八、数据小结
|
|
|
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
相关话题
#ClaudeCode #Anthropic #npm安全 #AI编程工具 #源码泄露 #开发者工具 #供应链安全 #Bun #TypeScript #AI行业
关注我精彩继续~
🙌 觉得有料?点赞、在看、转发三连!
往期回顾:
夜雨聆风