Claude Code源码泄露与Axios被投毒:2026年3月最后一天,开源界经历了什么
2026年3月31日,对全球开发者来说注定是不平静的一天。
Hacker News首页被两个重磅事件占据:一个是Anthropic意外泄露了Claude Code的完整源码,另一个是npm上下载量超过1亿次的axios库遭供应链攻击,被植入跨平台远控木马。
两个事件看似独立,却共同指向一个核心议题——在AI与开源深度融合的时代,软件供应链安全已经进入了一个前所未有的复杂阶段。
一、Claude Code源码泄露:Anthropic的”衣柜”被打开了
1.1 事件始末
3月31日,开发者Chaofan Shou发现Anthropic在发布Claude Code的npm包时,意外附带了一个.map源码映射文件。这个文件包含了Claude Code CLI工具的完整可读源代码。
消息传出后,源码被迅速镜像分发,GitHub上出现了多个fork,Hacker News上的讨论帖在几小时内获得了数百条评论和800+的upvote。Anthropic随后撤下了该包,但为时已晚——源码已经在社区中广泛传播。
值得注意的是,这是Anthropic在一周内的第二次意外泄露。几天前,Claude的模型规格文档也曾被意外暴露。巧合的时间点让一些人开始猜测:是否有人在内部故意为之?虽然大概率不是,但连续两次泄露确实让Anthropic的工程规范遭受质疑。
1.2 源码中最”辣眼”的发现
源码泄露后,社区开发者们迅速开始”考古”。以下是几个引发广泛讨论的关键发现:
反蒸馏机制:注入假工具污染训练数据
在claude.ts文件中,开发者发现了一个名为ANTI_DISTILLATION_CC的标志位。当启用时,Claude Code会在API请求中发送anti_distillation: ['fake_tools']参数,指示服务器在系统提示中静默注入虚假的工具定义。
目的很明确:如果有人在记录Claude Code的API流量来训练竞争模型,这些假工具会污染训练数据。该机制通过GrowthBook功能标志(tengu_anti_distill_fake_tool_injection)控制,仅对第一方CLI会话生效。
此外,betas.ts中还实现了第二重保护——服务端的连接器文本摘要机制。启用后,API会缓冲助手在工具调用之间的文本,进行摘要,并附带加密签名返回。后续轮次中,原始文本可以从签名恢复。如果有人在录制API流量,只能拿到摘要,而非完整的推理链。
不过,社区很快指出这些保护措施并不难绕过。设置环境变量CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS即可关闭整个机制,使用第三方API提供商时检查也不会触发。正如一位HN评论者所说:”认真的蒸馏者花一小时读源码就能找到绕过方法,真正的保护大概在法律层面。”
卧底模式:AI隐藏自己的AI身份
undercover.ts文件实现了一个”卧底模式”——当Claude Code在非内部代码库中使用时,会清除所有Anthropic内部痕迹。它指示模型不得提及内部代号(如”Capybara”或”Tengu”)、内部Slack频道、仓库名称,甚至”Claude Code”这个词本身。
代码中有一句耐人寻味的注释:“There is NO force-OFF. This guards against model codename leaks.” 可以通过环境变量强制开启,但无法关闭。
这意味着Anthropic员工用Claude Code生成的开源项目提交和PR,将没有任何AI参与的痕迹。隐藏内部代号尚可理解,但让AI主动假装是人类,这个边界值得深思。
用正则表达式检测用户”情绪崩溃”
userPromptKeywords.ts中包含一个用于检测用户沮丧情绪的正则表达式:
/\b(wtf|wth|ffs|omfg|shit(ty|tiest)?|dumbass|horrible|awful|
piss(ed|ing)? off|piece of (shit|crap|junk)|what the (fuck|hell)|
fucking? (broken|useless|terrible|awful|horrible)|fuck you|
screw (this|you)|so frustrating|this sucks|damn it)\b/
一家LLM公司用正则表达式做情感分析,被戏称为”年度最讽刺时刻”。但从工程角度看,用正则检查用户是否在骂你的工具,确实比调一次LLM推理要快得多、也便宜得多。
原生客户端认证:API调用的”DRM”
system.ts中揭示了Anthropic的底层技术壁垒——原生客户端认证。API请求中包含一个cch=00000占位符,在请求离开进程之前,Bun的原生HTTP栈(用Zig编写)会用计算出的哈希值替换这五个零。服务器验证该哈希以确认请求来自真正的Claude Code二进制文件。
这就是Anthropic与OpenCode法律纠纷背后的技术壁垒。Anthropic不仅要求第三方工具不使用其API,还在二进制层面通过密码学证明请求的真实性。设计上使用相同长度的占位符,避免改变Content-Length头或需要缓冲区重新分配。计算发生在JavaScript运行时之下,对JS层的任何东西都不可见。
本质上,这是HTTP传输层的DRM。
1.3 更深层的含义
Claude Code源码泄露揭示了一个有趣的趋势:AI工具公司正在从纯软件公司转变为兼具平台治理和技术壁垒的混合体。Anthropic既需要开放API让开发者使用,又需要防止被蒸馏、被逆向、被第三方工具薅羊毛。
这种张力在未来只会加剧。当AI能力越来越强,围绕它的攻防也会越来越复杂。
二、Axios供应链攻击:npm生态的”惊魂两小时”
2.1 攻击概述
就在Claude Code源码泄露的同一天,另一个重磅安全事件震惊了JavaScript社区。
3月30日,安全公司StepSecurity发现npm上最受欢迎的JavaScript HTTP客户端库axios被投毒。两个恶意版本——axios@1.14.1和axios@0.30.4——被发布到npm注册表。axios拥有超过1亿周下载量,几乎每个JavaScript项目都直接或间接依赖它。
恶意版本的攻击手法极其精巧:axios源码本身没有一行恶意代码,取而代之的是注入了一个名为plain-crypto-js@4.2.1的假依赖。这个包在axios代码中从未被导入,其唯一目的是执行一个postinstall脚本,部署一个跨平台远控木马(RAT)。
木马会联系一个活跃的命令与控制(C2)服务器,为macOS、Windows和Linux分别投递不同的二级载荷。执行完毕后,木马会自毁并替换自己的package.json为干净版本,以逃避取证检测。
开发者事后检查node_modules文件夹,将找不到任何异常迹象。
2.2 攻击时间线
这次攻击展现了高度的预谋和操作成熟度:
| 时间 (UTC) | 事件 |
|---|---|
| 3月30日 05:57 | 攻击者发布plain-crypto-js@4.2.0(干净版,建立发布历史) |
| 3月30日 23:59 | 攻击者发布plain-crypto-js@4.2.1(加入恶意载荷) |
| 3月31日 00:21 | axios@1.14.1发布(注入恶意依赖) |
| 3月31日 01:00 | axios@0.30.4发布(39分钟后覆盖0.x分支) |
| 3月31日 ~03:15 | npm下架两个恶意版本 |
恶意依赖被提前18小时预置,三个平台载荷预先构建,两个发布分支在39分钟内被同时投毒。npm install执行后两秒内,木马已经开始回连攻击者的服务器。
StepSecurity的评价是:“这是有史以来针对Top 10 npm包最复杂的供应链攻击之一。”
2.3 攻击是如何被发现的
攻击者虽然精心设计,但忽略了一个关键点——CI/CD环境中的网络监控。
StepSecurity的Harden-Runner工具(已部署在超过12000个公共仓库中)检测到被投毒的axios包在多个开源项目的CI运行中向攻击者的C2域名sfrclak.com:8000发起异常出站连接。例如,在广泛使用的开发者门户框架Backstage的仓库中,该连接被自动标记为异常,因为它从未出现在任何先前的workflow运行中。
这一发现凸显了运行时安全监控的重要性——静态分析无法发现不修改源码的依赖注入攻击。
2.4 关键教训
1. OIDC可信发布者的价值
每个合法的axios 1.x版本都是通过GitHub Actions的npm OIDC可信发布者机制发布的,发布操作被密码学绑定到经过验证的GitHub Actions工作流。而axios@1.14.1打破了这一模式——由被攻破的维护者账号直接发布。这是最关键的取证信号。
2. 依赖不是越多越好
plain-crypto-js在axios代码中从未被导入,但作为运行时依赖被注入。如果项目使用了依赖审计工具,这个”幽灵依赖”本应被标记。
3. npm生态的信任模型需要升级
npm的包发布机制仍然主要依赖账号密码和2FA,一旦维护者账号被攻破,攻击者就能以”合法”身份发布恶意版本。
三、两个事件的交汇:AI时代的供应链安全
Claude Code源码泄露和Axios供应链攻击虽然性质不同,但都指向同一个趋势:软件供应链正在变得前所未有地复杂和脆弱。
3.1 AI工具的双刃剑
Claude Code中的反蒸馏机制和原生客户端认证表明,AI公司正在积极构建技术壁垒。这些壁垒虽然有其合理性(保护商业利益),但也增加了生态的封闭性。当AI工具成为开发流程的核心环节,其内部机制的透明度变得至关重要。
3.2 供应链攻击的进化
Axios攻击展示了供应链攻击的最新形态:
- • 不修改源码,通过依赖注入实现攻击
- • 预置18小时,规避”新包”安全告警
- • 自毁机制,消除取证痕迹
- • 跨平台载荷,最大化影响范围
3.3 开发者应该做什么?
- 1. 立即检查:如果你安装过
axios@1.14.1或axios@0.30.4,假设你的系统已被攻破 - 2. 启用依赖锁定:使用
package-lock.json或pnpm-lock.yaml,避免意外升级到恶意版本 - 3. 部署CI/CD安全监控:如StepSecurity Harden-Runner等工具可以检测异常网络行为
- 4. 关注OIDC可信发布者:确保你的项目依赖通过CI/CD管道发布,而非手动发布
- 5. 定期审计依赖:使用
npm audit、socket.dev等工具检查依赖安全
四、今日科技热搜速览
除了上述两个重磅事件,今日国内外科技圈还有以下值得关注的话题:
国内:
- • 男子靠AI开一人公司年营收达150万(微博热搜第2,75万热度)——AI创业成为新的个人商业模式
- • 可载重3.5吨”无人空中重卡”首飞成功(百度热搜第3)——长鹰-8大型运投无人机在郑州首飞,成为全球迄今首飞的最大货运无人机
- • 军事机密泄露竟是因为运动手表(百度热搜第4)——智能穿戴设备的GPS数据泄露引发数据安全讨论
- • 内存条价格大跳水(微博热搜)——硬件市场波动引发消费者关注
- • 苹果国行AI有哪些玩法(B站热搜)——Apple Intelligence在中国市场的落地情况
- • DDR6内存要来了吗(B站热搜)——下一代内存技术的讨论
GitHub Trending:
- •
luongnv89/claude-howto— Claude使用指南(受源码泄露事件推动) - •
microsoft/VibeVoice— 微软新项目 - •
Yeachan-Heo/oh-my-claudecode— Claude Code增强工具 - •
shanraisshan/claude-code-best-practice— Claude Code最佳实践 - •
NousResearch/hermes-agent— AI Agent框架 - •
microsoft/agent-lightning— 微软Agent框架 - •
sherlock-project/sherlock— 用户名跨平台搜索工具 - •
OpenBMB/ChatDev— AI驱动的软件开发
结语
2026年3月的最后一天,给开发者社区上了两堂深刻的课:
Claude Code源码泄露告诉我们,AI工具的内部机制远比表面看到的复杂——反蒸馏、卧底模式、原生认证,这些隐藏在黑箱中的设计,影响着每一个使用者的数据和隐私。
Axios供应链攻击则再次提醒我们,软件供应链安全是一场永无止境的军备竞赛——攻击者在进化,防御者也需要进化。
对于每一个开发者来说,保持警惕、使用安全工具、建立良好的依赖管理习惯,已经不再是”可选”而是”必修”。
在这个AI与开源深度融合的时代,安全不是阻碍创新的速度限制,而是让创新可持续前进的护栏。
夜雨聆风