乐于分享
好东西不私藏

Claude Code源码泄露事件:安全风险深度解析

Claude Code源码泄露事件:安全风险深度解析

Claude Code源码泄露事件:安全风险深度解析

基于v2.1.88源码分析 | 安全风险深度解读

大家都在聊从Claude Code里蒸馏出来多少个skill。这边来讲点不一样的。

⚠️ 免责声明:本文基于公开泄露的源码进行安全研究分析,仅供技术研究与教育目的使用。请遵守当地法律法规。

事件回顾

前几天 ,Claude Code源码在GitHub泄露,引发安全圈广泛关注。这个由Anthropic推出的AI编程工具,.map文件反编译出源码约51万行代码、1884个文件,泄露后安全研究人员发现了多个令人不安的设计。

一、遥测监控:你在被全程追踪

1.1 两个分析数据池

Claude Code内置了两个遥测数据收集端:

数据池
用途
可关闭?
1P (第一方)
产品内部分析
❌ 无法通过UI退出
Datadog
第三方监控
⚠️ 部分可配置

1.2 收集了什么?

每次操作都会上报:

  • 环境指纹
    (操作系统、Node版本、主机名等)
  • 进程指标
    (内存、CPU、执行时间)
  • 仓库哈希
    (项目唯一标识)
  • 工具调用记录

🔑 关键发现:设置环境变量 OTEL_LOG_TOOL_DETAILS=1 可开启完整工具输入捕获,包括你传递给工具的所有参数。

1.3 无法退出的隐私收集

第一方遥测没有UI暴露的退出选项。这意味着:

  • 即便你关闭所有”用户体验改进”选项
  • 即便你选择不分享使用数据
  • 遥测仍在后台运行

这对企业安全团队是一个严重警示:

# 如果你在高度敏感的环境工作
# Claude Code 不是一个可选的监控工具
# 它是必须运行的监控工具

二、卧底模式:AI在GitHub上伪装人类

2.1 什么是卧底模式?

当检测到以下条件时:

  • 官方员工账号
  • 公共仓库环境

Claude Code会自动进入卧底模式(Undercover Mode)

2.2 行为改变

在卧底模式下,模型会:

  1. 不暴露AI身份
     — “不要暴露你的身份”
  2. 像人类一样写commit
     — 模仿真实开发者的提交风格
  3. 剥离所有AI属性
     — 不留任何AI参与痕迹

2.3 没有关闭开关

项目
状态
触发条件
官方员工 + 公共仓库
可强制关闭
❌ 否
用户感知
无UI提示

2.4 开源社区的透明度危机

当你看到”human”提交的commit时,你如何确认它真的是人类写的?

这对开源社区的信任机制是一个挑战。贡献者的”人类身份”不再是一个可靠信号。

三、远程控制:你的工具可以被远程修改

3.1 每小时轮询机制

Claude Code会每小时向Anthropic服务器轮询

GET /api/claude_code/settings

服务器可以返回配置更改,客户端会自动应用,无需用户确认。

3.2 危险操作的”阻止对话框”

⚠️ 此设置可能影响安全

[阻止][允许]

拒绝 = 应用更改后退出程序

3.3 6个以上的紧急开关(Killswitches)

代码中发现了多个可远程控制的开关:

开关名称
功能
bypass_permissions
绕过权限确认
fast_mode
启用快速模式
voice_mode
启用语音模式
analytics_sink
切换分析数据池
更多未公开

3.4 GrowthBook flags:远程修改行为

通过GrowthBook(一个特性标志服务),Anthropic可以:

  • 无需用户同意
    更改任何用户的工具行为
  • 实时生效
    ,下次轮询即应用
  • 针对特定用户或群体
    ,进行A/B测试
// 伪代码示例:远程开关可能的样子
if (featureFlags.tengu_frond_boric.enabled) {
  // 悄悄改变工具行为
  enableHiddenFeature();
}

四、隐藏世界:动物代号与特性标志

4.1 模型代号系统

Claude Code内部使用动物代号:

代号
版本
说明
Capybara
v8
当前主要版本
Tengu
某功能分支
Fennec
对应 Opus 4.6
Numbat
下一个
未来版本

4.2 混淆的特性标志

特性标志使用随机词组命名:

  • tengu_frond_boric
  • numbat_plume_solder
  • capybara_lager_lignin

这种命名方式刻意隐藏了标志的真实目的,增加了安全审计的难度。

4.3 内部用户vs外部用户

代码揭示了一个双重标准:

功能
内部用户
外部用户
提示词质量
优化版本 ✓
标准版本
验证代理
有 ✓
Effort anchors
有 ✓
某些工具
独占 ✓
不可用

五、安全建议

5.1 企业用户

❌ 不推荐在以下场景使用 Claude Code:

  • 涉密项目
  • 专有代码
  • 金融、医疗等敏感行业
  • 任何需要审计追溯的环境

✅ 如必须使用

  • 在隔离环境中运行
  • 网络层面阻断遥测数据外传
  • 禁用所有环境变量中的日志选项
  • 定期审计代码变更

5.2 个人开发者

⚠️ 注意

  • 你的代码操作正在被收集
  • 仓库哈希会被用于分析
  • 不要在敏感项目中启用增强日志

✅ 安全实践

  • 不在命令行传递敏感信息
  • 定期检查 .claude 目录
  • 了解并接受遥测存在

5.3 网络安全团队

建议行动

  1. 审计网络流量,识别 Claude Code 流量特征
  2. 在防火墙规则中添加出口过滤
  3. 如果使用,需明确告知员工监控存在
  4. 考虑开源替代方案

六、技术分析总结

~1,884

源码文件数

~512K

代码行数

785KB

最大文件 (query.ts)

~40+

内置工具数

~80+

斜杠命令

~192

依赖包

核心架构

用户输入 --> 消息队列 --> Claude API --> 响应
                                    |
                          stop_reason == "tool_use"?
                          /                     \
                        是                      否
                        |                       |
                    执行工具               返回文本结果
                        |
                   工具结果追加到消息
                        |
                    <-- 循环回到 API -->

关键风险点

风险等级
风险点
影响
🔴 高
遥测无法退出
隐私泄露
🔴 高
远程控制开关
行为被篡改
🟠 中
卧底模式
透明度问题
🟠 中
GrowthBook flags
静默行为变更
🟡 低
特性标志混淆
审计困难

七、结语

现代AI编程工具不只是”帮助你写代码”,它们同时在收集数据、接受远程指令、并在特定条件下改变行为。

这不代表这些工具不可用,而是提醒我们:

  1. 了解你的工具
     — 阅读隐私政策,了解数据收集
  2. 评估你的环境
     — 敏感环境需要更谨慎的选择
  3. 企业需要策略
     — 不能依赖个人判断,需要统一规范

对于安全从业者,这次泄露是一次难得的分析机会,也是一记警钟。

本文基于公开泄露的源码分析,仅用于安全研究和教育目的。