Claude Code 源码泄露事件完整总结
Claude Code 源码泄露事件完整总结
🎯 事件概述
基本信息
|
|
|
|---|---|
| 泄露时间 |
|
| 发现者 |
|
| 泄露平台 |
|
| 泄露包名 | @anthropic-ai/claude-code
|
| 泄露方式 |
|
| 代码量 |
|
| 文件数 |
|
| 事件性质 |
|
事件简述
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
|
|
|
| ~04:23
|
|
|
| ~04:30
|
|
|
| ~05:00
|
|
|
| ~06:23
|
|
|
| ~07:00
|
|
|
| ~08:00
|
|
|
| 同日后续 |
|
|
| 同日 |
|
|
| Apr 1 |
|
|
| Apr 2 |
|
|
| 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 -
尝试控制代码传播(但未成功)
📦 泄露内容详情
代码规模统计
|
|
|
|---|---|
| 总代码行数 |
|
| 文件数量 |
|
| 子系统数量 |
|
| 工具模块 |
|
| React 组件 |
|
| 服务模块 |
|
| Hook 模块 |
|
| 内置工具 |
|
| Bundled Skills |
|
| 内置代理 |
|
泄露的代码内容
✅ 已泄露(客户端 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 日)
社区反应:
-
开发者抗议
-
大量开发者在社交媒体表达不满 -
指责 Anthropic”过度删除”和”滥用 DMCA” -
标签 #SaveClaudeCode trending -
镜像转移
-
代码迅速转移到分布式平台(Gitlawb、IPFS 等) -
“打地鼠”效应:删除一个,出现十个 -
清洁室实现
-
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 事件时间线
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
📢 官方回应与后续
Anthropic 官方声明
第一次声明(3 月 31 日)
“我们意识到
@anthropic-ai/claude-codenpm 包的一个版本包含了不应公开的源代码。我们已下架该版本并正在调查此事。”—— 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 模型泄露 |
|
|
|
| Claude Code 泄露 |
|
|
|
🌍 行业影响与警示
对 AI 行业的影响
1. 供应链安全意识提升
问题暴露:
npm 生态系统的脆弱性:
- 依赖链中的任何环节都可能成为攻击面
- Source Map 等调试文件常被忽视
- 自动化发布流程缺乏足够检查
行业响应:
-
多家 AI 公司审查自身 npm 包配置 -
增加构建产物安全检查 -
考虑使用私有 npm 注册表
2. AI 工具安全标准讨论
新提出的安全要求:
|
|
|
|---|---|
| 构建安全 |
|
| 代码混淆 |
|
| 访问控制 |
|
| 监控响应 |
|
| 合规审计 |
|
3. 竞争对手反应
直接竞争对手:
|
|
|
|
|---|---|---|
| OpenAI |
|
|
|
|
|
|
| Microsoft |
|
|
| Meta |
|
|
行业共识:
“此次事件提醒所有 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 公司的建议
构建安全
-
禁用生产环境 Source Map
// tsconfig.json (生产环境)
{
"compilerOptions": {
"sourceMap": false,
"inlineSources": false,
"inlineSourceMap": false
}
} -
实施自动化检查
# 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 -
使用
.npmignore白名单# 白名单方式(推荐)
dist/**/*.js
README.md
LICENSE
# 而非黑名单方式
# *.ts
# *.map
# tests/
发布流程
-
强制人工审核
-
所有生产发布需第二人审核 -
审核内容包括:包大小、文件列表、依赖变更 -
预发布环境验证
-
在隔离环境测试安装包 -
验证不包含敏感文件 -
版本发布检查清单
□ 代码审查完成
□ 测试全部通过
□ 安全扫描通过
□ 包大小正常
□ 无敏感文件
□ 第二人审核
□ 更新日志完整
监控响应
-
异常监控
-
监控 npm 包下载模式 -
检测异常批量下载 -
设置告警阈值 -
快速响应机制
-
建立安全事件响应流程 -
明确责任人和升级路径 -
定期演练
给开发者的建议
个人项目
-
审查依赖
# 检查项目依赖是否包含敏感文件
npm install && npm run build
find node_modules -name "*.map" | head -20 -
使用锁定文件
# 始终使用 package-lock.json 或 pnpm-lock.yaml
npm ci # 而非 npm install -
定期更新依赖
npm audit
npm update
企业项目
-
私有 npm 注册表
# 使用 Verdaccio 或 Nexus 搭建私有 npm
npm set registry http://your-private-registry/ -
依赖扫描
# 使用 Snyk、Dependabot 等工具
npm audit
snyk test -
最小权限原则
-
限制 npm token 权限 -
使用细粒度访问控制 -
定期轮换密钥
给安全团队的建议
主动防御
-
定期审计
-
每季度审计所有发布的包 -
检查是否包含敏感文件 -
验证构建配置 -
渗透测试
-
模拟攻击者视角 -
尝试从公开渠道获取敏感信息 -
测试响应机制 -
员工培训
-
发布流程培训 -
安全意识提升 -
案例分析学习
事件响应
-
建立 playbook
泄露事件响应流程:
1. 确认泄露范围和影响
2. 立即撤销访问权限
3. 评估是否需要 DMCA
4. 精准定位删除目标
5. 监控社区反应
6. 发布官方声明
7. 事后复盘和改进 -
沟通策略
-
快速但准确 -
透明但不泄露更多敏感信息 -
承认错误并提出改进措施
📝 总结
事件要点
-
泄露原因: npm 包发布配置错误,包含 59.8 MB source map 文件 -
泄露规模: 512,000 行 TypeScript 代码,1,906 个文件 -
影响范围: 客户端 CLI 工具源码,不涉及核心模型和用户数据 -
官方定性: 人为错误导致的发布打包问题,非安全漏洞 -
后续风波: DMCA 大规模删除误伤 8,100+ 合法仓库 -
行业警示: AI 公司需加强构建和发布流程安全
核心教训
|
|
|
|---|---|
| 构建配置无小事 |
|
| 发布流程需多重验证 |
|
| 快速响应≠过度响应 |
|
| 分布式时代信息难删除 |
|
| 安全是系统工程 |
|
对行业的长期影响
✅ 积极影响:
-
提升 AI 行业供应链安全意识 -
推动建立 AI 工具安全标准 -
促进最佳实践分享
⚠️ 潜在风险:
-
竞争对手获得技术细节 -
可能被用于发现漏洞 -
影响 Anthropic 市场信心
最终建议
给所有 AI 公司: 将此次事件作为安全检查的契机,审查自身的构建、发布、监控流程,建立纵深防御体系。
给开发者: 提高安全意识,审查依赖,遵循最佳实践,保护自己和用户。
给安全团队: 从预防、检测、响应三个维度建立完整的安全体系,定期演练和改进。
夜雨聆风