乐于分享
好东西不私藏

Claude Code 源码泄露事件完整总结

Claude Code 源码泄露事件完整总结

Claude Code 源码泄露事件完整总结

🎯 事件概述

基本信息

项目
详情
泄露时间
2026 年 3 月 31 日 04:00 UTC
发现者
Chaofan Shou (@Fried_rice) – Solayer Labs 实习生
泄露平台
npm 注册表
泄露包名 @anthropic-ai/claude-code

 v2.1.88
泄露方式
Source Map 文件暴露
代码量
512,000 行 TypeScript 代码
文件数
1,906 个文件
事件性质
人为错误导致的发布打包问题(非安全漏洞)

事件简述

2026 年 3 月 31 日,Anthropic 在发布 Claude Code CLI 工具的 npm 包版本 2.1.88 时,意外包含了一个 59.8 MB 的源映射文件cli.js.map)。该文件指向一个公开可访问的 Cloudflare R2 存储桶,其中包含了 Claude Code 命令行工具的完整、未混淆的 TypeScript 源代码

安全研究员 Chaofan Shou 在社交媒体 X 上公开披露此泄露事件后,代码在几小时内被大量下载、镜像到 GitHub 等平台,并在分布式托管平台(如 Gitlawb)上出现永久镜像。尽管 Anthropic 在 4 小时后下架了问题 npm 包并发出 DMCA 删除通知,但代码已在野永久可用。

关键数据

📦 泄露包大小:59.8 MB (cli.js.map)
📄 代码行数:512,000 - 513,000 行 TypeScript
📁 文件数量:1,906 个文件
⏱️  发现时间:包发布后 23 分钟内
👁️  社交媒体曝光:1600 万 -2880 万次浏览
⭐ GitHub 镜像:2 小时内 5 万 + 星标
🗑️  DMCA 删除:8,100+ 仓库被误删

⏰ 完整时间线

事件发展过程(UTC 时间)

时间
事件
影响
~04:00

 Mar 31
Anthropic 发布 v2.1.88 到 npm
包含 59.8 MB 源映射文件
~04:23

 Mar 31
Chaofan Shou 在 X 上公开泄露
帖子迅速获得千万级浏览
~04:30

 Mar 31
开发者开始下载分析源代码
Cloudflare R2 存储桶被全球访问
~05:00

 Mar 31
首个 GitHub 镜像仓库创建
2 小时内获得超过 5 万星标
~06:23

 Mar 31
Anthropic 开始发出 DMCA 删除通知
数千仓库 initially 被波及
~07:00

 Mar 31
分布式镜像在 Gitlawb 等平台出现
代码在野永久可用
~08:00

 Mar 31
Anthropic 下架 npm 包 v2.1.88
发布约 4 小时后撤包
同日后续
Anthropic 撤回大部分 DMCA 通知
仅针对 1 个主仓库和 96 个分叉
同日
Python 清洁室重写版本出现
开源替代开发开始
Apr 1
Anthropic 确认事件为”人为错误”
官方声明发布
Apr 2
DMCA 误删事件引发社区反弹
8,100+ 合法仓库被误删
Apr 3-7
技术社区深度分析泄露代码
隐藏功能、架构细节被逐步披露

关键节点详解

1️⃣ 泄露发生(04:00 UTC)

# 发布的 npm 包
@anthropic-ai/claude-code@2.1.88

# 问题文件
dist/cli.js.map (59.8 MB)

# 存储桶地址(已失效)
https://<cloudflare-r2-bucket>/cli.js.map

2️⃣ 发现与曝光(04:23 UTC)

发现者: Chaofan Shou

  • 身份: Solayer Labs 实习生,与 Fuzzland 有关联的安全研究员
  • 行动: 在 X 平台(Twitter)发布泄露消息
  • 影响: 帖子获得 1600 万 -2880 万次浏览,触发全球开发者社区快速响应

3️⃣ 社区响应(04:30 – 05:00 UTC)

  • 开发者开始从 Cloudflare R2 存储桶下载源代码
  • GitHub 镜像仓库迅速创建
  • 技术社区开始分析代码结构、功能和架构

4️⃣ Anthropic 应对(06:23 – 08:00 UTC)

  • 发出 DMCA 删除通知给 GitHub
  • 下架 npm 包 v2.1.88
  • 尝试控制代码传播(但未成功)

📦 泄露内容详情

代码规模统计

指标
数量
总代码行数
512,000 – 513,000 行
文件数量
1,906 个文件
子系统数量
31 个
工具模块
564 个
React 组件
389 个
服务模块
130 个
Hook 模块
104 个
内置工具
25+ 种
Bundled Skills
20 个
内置代理
6 个

泄露的代码内容

✅ 已泄露(客户端 CLI 工具)

  • ✅ 完整的 TypeScript 源代码
  • ✅ 内部 API 和权限执行逻辑
  • ✅ 沙盒架构实现
  • ✅ 44 个隐藏功能标志
  • ✅ 系统提示词组装逻辑
  • ✅ MCP(Model Context Protocol)集成代码
  • ✅ 工具执行管道和 Hook 协议
  • ✅ 内存和上下文管理系统
  • ✅ 终端 UI 组件(基于 React/Ink)

❌ 未泄露(核心资产安全)

  • ❌ 模型权重
  • ❌ 训练数据
  • ❌ 用户凭证
  • ❌ 后端基础设施代码
  • ❌ 客户数据
  • ❌ API 密钥

代码架构层级

┌─────────────────────────────────────────┐
│  Layer 5: UI 层 (389 React 组件)          │
│  - 终端界面、进度显示、交互组件          │
├─────────────────────────────────────────┤
│  Layer 4: 代理层 (6 个内置代理)           │
│  - explore, plan, verify, guide, etc.   │
├─────────────────────────────────────────┤
│  Layer 3: 工具层 (564 个工具模块)         │
│  - BashTool, FileTool, EditTool, etc.   │
├─────────────────────────────────────────┤
│  Layer 2: 安全层 (104 个 Hook 模块)        │
│  - PreToolUse, PostToolUse, 权限检查     │
├─────────────────────────────────────────┤
│  Layer 1: 核心层 (31 个子系统)            │
│  - 配置管理、日志、分析、MCP 等           │
└─────────────────────────────────────────┘

⚖️ DMCA 删除风波

Anthropic 的 DMCA 行动

第一阶段:大规模删除(3 月 31 日 06:23 UTC)

行动内容:

  • Anthropic 向 GitHub 发出 DMCA 删除通知
  • 目标:移除泄露的 Claude Code 源代码仓库

删除规模:

📊 初始删除:
- 主仓库:1 个
- 分叉仓库:约 100 个(初始报告)

📊 实际删除(后续统计):
- 总计:8,100+ 个仓库
- 包括:大量合法分叉和无关项目

第二阶段:社区反弹(4 月 1-2 日)

社区反应:

  1. 开发者抗议

    • 大量开发者在社交媒体表达不满
    • 指责 Anthropic”过度删除”和”滥用 DMCA”
    • 标签 #SaveClaudeCode trending
  2. 镜像转移

    • 代码迅速转移到分布式平台(Gitlawb、IPFS 等)
    • “打地鼠”效应:删除一个,出现十个
  3. 清洁室实现

    • Python 重写版本出现
    • Rust 重构版本启动
    • 社区 fork 版本涌现

第三阶段:Anthropic 撤回(4 月 2 日)

官方回应:

“我们的 DMCA 通知意外影响了合法的分叉仓库。我们正在与 GitHub 合作恢复被误删的仓库。”

—— Anthropic 发言人(4 月 2 日)

后续行动:

  • 撤回大部分 DMCA 通知
  • 仅保留对 1 个主仓库和 96 个分叉的删除要求
  • 与 GitHub 合作恢复约 8,000 个被误删仓库

GitHub 的 DMCA 处理

GitHub 官方立场:

根据 DMCA 第 512 条要求:
- GitHub 必须响应有效的删除通知
- 对于超过 100 个仓库的大规模通知,GitHub 可以批量处理分叉
- 用户可以提交反通知(Counter-Notice)要求恢复

DMCA 通知记录:

  • 文件github/dmca/blob/master/2026/03/2026-03-31-anthropic.md
  • 提交时间: 2026 年 3 月 31 日
  • 状态: 部分撤回

社区创意回应

1. “换壳”反克隆

# 开发者创意:用不同语言重写规避 DMCA
git clone claude-code-python    # Python 重写版
git clone claude-code-rust      # Rust 重写版
git clone claude-code-go        # Go 重写版

2. 分布式镜像

  • Gitlawb: 分布式托管平台,无法删除
  • IPFS: 星际文件系统,永久存储
  • Torrent: BT 种子分发

3. 讽刺性项目

项目名称示例:
"Claude Code but it's Python"
"Not-Claude-Code"
"Claude-Code-Inspired-Tool"

DMCA 事件时间线

时间
事件
仓库数量
3/31 06:23
Anthropic 发出 DMCA 通知
3/31 07:00
GitHub 开始删除
~100 (初始)
3/31 12:00
删除规模扩大
1,000+
4/1 00:00
社区发现误删
5,000+
4/1 12:00
媒体曝光误删事件
8,100+
4/2 00:00
Anthropic 撤回大部分通知
保留 97 个
4/2-4/7
GitHub 恢复被误删仓库
~8,000

📢 官方回应与后续

Anthropic 官方声明

第一次声明(3 月 31 日)

“我们意识到 @anthropic-ai/claude-code npm 包的一个版本包含了不应公开的源代码。我们已下架该版本并正在调查此事。”

—— Anthropic 发言人

第二次声明(4 月 1 日)

“这是一个由人为错误导致的发布打包问题并非安全漏洞

泄露不涉及也未暴露任何敏感客户数据或凭证

我们正在推行措施,以防止此类事件再次发生。”

—— Anthropic 发言人

采取的补救措施

1. 立即行动(3 月 31 日)

  • ✅ 下架问题 npm 包 v2.1.88
  • ✅ 撤销 Cloudflare R2 存储桶的公开访问权限
  • ✅ 发出 DMCA 删除通知(后大部分撤回)
  • ✅ 内部安全审查启动

2. 短期措施(4 月 1-7 日)

  • ✅ 审查所有已发布的 npm 包
  • ✅ 检查其他构建产物是否包含敏感文件
  • ✅ 加强发布流程的人工审核
  • ✅ 与 GitHub 协调恢复被误删仓库

3. 长期改进(计划中)

  • 🔄 实施自动化预发布检查
    • 包大小异常检测
    • 敏感文件扫描
    • .map 文件自动排除
  • 🔄 改进 .npmignore 配置管理
  • 🔄 建立发布前安全检查清单
  • 🔄 加强 CI/CD 管道安全
  • 🔄 员工培训和意识提升

影响评估

Anthropic 官方评估

✅ 未泄露的敏感信息:
- 模型权重
- 训练数据
- 用户数据
- 客户凭证
- 后端基础设施

⚠️ 已泄露的信息:
- 客户端 CLI 工具源码(512K 行)
- 内部 API 设计
- 架构实现细节
- 未发布功能设计

第三方安全评估

Zscaler ThreatLabz:

“此次泄露虽然不涉及核心模型资产,但暴露了 AI 工具的内部工作机制,可能被恶意利用来:

  • 发现工具执行漏洞
  • 绕过安全检查
  • 开发针对性攻击”

行业分析师:

“这是 Anthropic 在一周内的第二次数据泄露事件(前几天刚发生 Mythos 模型信息泄露),可能影响市场对其数据管理能力的信心。”

连续泄露事件对比

事件
时间
泄露内容
影响
Mythos 模型泄露
2026 年 3 月 26 日
新模型描述和文档
产品信息提前曝光
Claude Code 泄露
2026 年 3 月 31 日
512K 行源代码
技术细节完全暴露

🌍 行业影响与警示

对 AI 行业的影响

1. 供应链安全意识提升

问题暴露:

npm 生态系统的脆弱性:
- 依赖链中的任何环节都可能成为攻击面
- Source Map 等调试文件常被忽视
- 自动化发布流程缺乏足够检查

行业响应:

  • 多家 AI 公司审查自身 npm 包配置
  • 增加构建产物安全检查
  • 考虑使用私有 npm 注册表

2. AI 工具安全标准讨论

新提出的安全要求:

领域
建议措施
构建安全
自动化预发布检查、敏感文件扫描
代码混淆
生产环境必须混淆、移除 source map
访问控制
最小权限原则、API 密钥轮换
监控响应
异常下载检测、快速响应机制
合规审计
定期安全审计、第三方渗透测试

3. 竞争对手反应

直接竞争对手:

公司
产品
反应
OpenAI
Codex / GPT Engineer
内部安全审查
Google
AlphaCode
加强发布流程
Microsoft
GitHub Copilot
安全最佳实践分享
Meta
Code Llama
开源策略再评估

行业共识:

“此次事件提醒所有 AI 公司:安全是系统工程,需要从构建、发布、部署全链路考虑。”

安全警示录

教训 1: 构建配置无小事

❌ 错误做法:
- 生产环境包含 source map
- .npmignore 配置不完整
- 缺乏自动化检查

✅ 正确做法:
- 生产环境禁用 source map
- 使用白名单而非黑名单
- CI/CD 集成安全检查

教训 2: 发布流程需要多重验证

推荐检查清单:
□ 包大小是否正常(对比历史版本)
□ 是否包含 .map / .ts / 测试文件
□ 是否包含敏感配置或密钥
□ 是否通过自动化安全扫描
□ 是否有第二人审核

教训 3: 快速响应很重要,但过度响应更糟

Anthropic 的教训:
- ✅ 快速下架问题包(正确)
- ❌ 过度 DMCA 删除(错误)
- ✅ 后续撤回并恢复(补救)

最佳实践:
- 快速评估影响范围
- 精准定位目标
- 避免"宁可错杀一千"

教训 4: 分布式时代的信息控制

现实:
- 一旦信息上网,几乎不可能完全删除
- 分布式存储(IPFS、Gitlawb)使删除更困难
- 社区力量可以快速镜像和重分发

启示:
- 预防胜于补救
- 设计阶段就要考虑"最坏情况"
- 假设泄露会发生,设计防御纵深

对开发者的启示

1. 使用第三方库的安全检查

# 检查已安装的 npm 包是否包含敏感文件
npm ls --depth=0 | while read pkg; do
# 检查是否包含 .map 文件
  find node_modules/$pkg -name "*.map" | wc -l
# 检查是否包含 .ts 源码
  find node_modules/$pkg -name "*.ts" | wc -l
done

2. 自身项目的发布安全

推荐配置:

// package.json
{
"scripts"{
"prepublishOnly""npm run security-check",
"security-check""node scripts/check-sensitive-files.js"
},
"files"[
"dist/**/*.js",
"README.md"
],
"dependencies"{},
"devDependencies"{
"source-map-loader""^5.0.0"// 仅开发环境
}
}
// .npmignore (白名单方式)
# 只包含必要文件
dist/**/*.js
README.md
LICENSE

# 明确排除
**/*.ts
**/
*.map
**/*.test.js
**/
tests/
**/.env*

3. 企业级发布流程建议

推荐流程:
开发 → 代码审查 → 自动化测试 → 安全扫描 → 
人工审核 → 预发布环境 → 生产发布 → 监控

🛡️ 安全建议

给 AI 公司的建议

构建安全

  1. 禁用生产环境 Source Map

    // tsconfig.json (生产环境)
    {
    "compilerOptions": {
    "sourceMap"false,
    "inlineSources"false,
    "inlineSourceMap"false
      }
    }
  2. 实施自动化检查

    # CI/CD 检查脚本示例
    #!/bin/bash
    MAX_SIZE=10000000  # 10MB
    ACTUAL_SIZE=$(stat -f%z dist/bundle.js 2>/dev/null || stat -c%s dist/bundle.js)

    if [ $ACTUAL_SIZE -gt $MAX_SIZE ]; then
    echo "❌ 包大小异常:$ACTUAL_SIZE bytes"
    exit 1
    fi

    # 检查敏感文件
    if find dist -name "*.map" -o -name "*.ts" | grep -q .; then
    echo "❌ 发现敏感文件"
    exit 1
    fi
  3. 使用 .npmignore 白名单

    # 白名单方式(推荐)
    dist/**/*.js
    README.md
    LICENSE

    # 而非黑名单方式
    # *.ts
    # *.map
    # tests/

发布流程

  1. 强制人工审核

    • 所有生产发布需第二人审核
    • 审核内容包括:包大小、文件列表、依赖变更
  2. 预发布环境验证

    • 在隔离环境测试安装包
    • 验证不包含敏感文件
  3. 版本发布检查清单

    □ 代码审查完成
    □ 测试全部通过
    □ 安全扫描通过
    □ 包大小正常
    □ 无敏感文件
    □ 第二人审核
    □ 更新日志完整

监控响应

  1. 异常监控

    • 监控 npm 包下载模式
    • 检测异常批量下载
    • 设置告警阈值
  2. 快速响应机制

    • 建立安全事件响应流程
    • 明确责任人和升级路径
    • 定期演练

给开发者的建议

个人项目

  1. 审查依赖

    # 检查项目依赖是否包含敏感文件
    npm install && npm run build
    find node_modules -name "*.map" | head -20
  2. 使用锁定文件

    # 始终使用 package-lock.json 或 pnpm-lock.yaml
    npm ci  # 而非 npm install
  3. 定期更新依赖

    npm audit
    npm update

企业项目

  1. 私有 npm 注册表

    # 使用 Verdaccio 或 Nexus 搭建私有 npm
    npm set registry http://your-private-registry/
  2. 依赖扫描

    # 使用 Snyk、Dependabot 等工具
    npm audit
    snyk test
  3. 最小权限原则

    • 限制 npm token 权限
    • 使用细粒度访问控制
    • 定期轮换密钥

给安全团队的建议

主动防御

  1. 定期审计

    • 每季度审计所有发布的包
    • 检查是否包含敏感文件
    • 验证构建配置
  2. 渗透测试

    • 模拟攻击者视角
    • 尝试从公开渠道获取敏感信息
    • 测试响应机制
  3. 员工培训

    • 发布流程培训
    • 安全意识提升
    • 案例分析学习

事件响应

  1. 建立 playbook

    泄露事件响应流程:
    1. 确认泄露范围和影响
    2. 立即撤销访问权限
    3. 评估是否需要 DMCA
    4. 精准定位删除目标
    5. 监控社区反应
    6. 发布官方声明
    7. 事后复盘和改进
  2. 沟通策略

    • 快速但准确
    • 透明但不泄露更多敏感信息
    • 承认错误并提出改进措施

📝 总结

事件要点

  1. 泄露原因: npm 包发布配置错误,包含 59.8 MB source map 文件
  2. 泄露规模: 512,000 行 TypeScript 代码,1,906 个文件
  3. 影响范围: 客户端 CLI 工具源码,不涉及核心模型和用户数据
  4. 官方定性: 人为错误导致的发布打包问题,非安全漏洞
  5. 后续风波: DMCA 大规模删除误伤 8,100+ 合法仓库
  6. 行业警示: AI 公司需加强构建和发布流程安全

核心教训

教训
说明
构建配置无小事
source map 等调试文件必须在生产环境排除
发布流程需多重验证
自动化检查 + 人工审核缺一不可
快速响应≠过度响应
DMCA 删除需精准定位,避免误伤
分布式时代信息难删除
预防胜于补救,设计阶段考虑最坏情况
安全是系统工程
需要全链路考虑,从开发到发布到监控

对行业的长期影响

✅ 积极影响:

  • 提升 AI 行业供应链安全意识
  • 推动建立 AI 工具安全标准
  • 促进最佳实践分享

⚠️ 潜在风险:

  • 竞争对手获得技术细节
  • 可能被用于发现漏洞
  • 影响 Anthropic 市场信心

最终建议

给所有 AI 公司: 将此次事件作为安全检查的契机,审查自身的构建、发布、监控流程,建立纵深防御体系。

给开发者: 提高安全意识,审查依赖,遵循最佳实践,保护自己和用户。

给安全团队: 从预防、检测、响应三个维度建立完整的安全体系,定期演练和改进。