3月31日凌晨4点,Anthropic的工程师按下发布按钮时,大概没想到这个版本号v2.1.88会成为AI行业年度最魔幻事件的开端。59.8MB的调试文件里,藏着51.2万行TypeScript源码、44个未公开的功能开关,以及一只电子宠物。
这不是漏洞,是两层配置失误的叠加态。
JavaScript生态里有个基础常识:source map(源映射文件)是开发者的拐杖,不是用户的礼物。它把压缩后的乱码还原成可读的源码行号,方便调试崩溃。但这个东西绝不能流向生产环境——就像你不会把建筑蓝图贴在商品房外墙上。
屏蔽它的方法也很简单:在.npmignore里写一行*.map,或者在package.json的files字段里排除。Anthropic的.npmignore文件里,这一行不存在。
更离谱的是第二层。这个source map没有直接内嵌源码,而是指向了一个URL——Anthropic自己Cloudflare R2存储桶里的src.zip。公开访问,无需认证,512,000行代码打包好了等人下载。
软件工程师Gabriel Anhaia在复盘里说得直白:「一个配错的.npmignore或package.json字段,就能暴露一切。」
Bun的20天窗口期:被忽视的已知bug
时间线在这里分叉出第三条暗线。Anthropic 2025年底收购了Bun JavaScript运行时,Claude Code正是基于它构建。而Bun的GitHub上,issue #28001早在3月11日就报告了source map会在生产构建中泄露的问题。
文档说不会,实际会。bug开了20天,没人修,也没人检查Claude Code的发布流程是否踩中。
自己收购的工具链,坑了自己的旗舰产品。这种闭环,产品经理看了会沉默。
泄露的内容清单像一份意外公开的体检报告:1,906个TypeScript文件,44个feature flag(功能开关)——包括正在开发的语音模式、记忆系统重构、以及那个代号「Tamagotchi」的内部彩蛋。用户发现的电子宠物,原来是工程师埋在代码里的解压玩具。
巧合的恶意软件与精准的4小时窗口
同一天凌晨0:21,npm上突然出现两个恶意axios版本(1.14.1和0.30.4),嵌入了远程访问木马。与Anthropic无关,但时间线灾难性地重叠。
4点23分,安全研究员Chaofan Shou在推特发出警报。此时距离v2.1.88上线仅23分钟,但足够让全球开发者把51万行代码扒个底朝天。
Anthropic的反应速度倒是不慢:6点17分,R2桶被设为非公开;7点52分,npm包被标记为废弃;10点15分,v2.1.89紧急发布,移除了source map。总暴露窗口约6小时,但代码一旦流出,撤回只是姿态。
「事故」的三种解读光谱
社区很快分裂成三个阵营。阴谋论者盯着那44个功能开关——其中「语音模式v3」和「记忆系统2.0」正是竞品正在追赶的方向,精准泄露像是定向投喂。
务实派算经济账:Claude Code是付费CLI工具,源码泄露等于把家底摊开给竞争对手。Anthropic 2025年营收19亿美元,其中企业API占62%,这种级别的失误,CTO的季度复盘会很难看。
而第三种声音在Hacker News上获得高赞:「这可能是AI行业史上最便宜的病毒式营销。」51万行代码的「泄露」,让Anthropic的技术实力被全球开发者免费审计;Tamagotchi彩蛋的传播度,远超任何官方campaign。对比OpenAI 2024年开发者大会的2000万美元预算,这次「事故」的传播成本为零。
但漏洞赏金平台HackerOne的记录显示,Anthropic过去18个月为npm配置类漏洞支付过3笔赏金,最高一笔8000美元。如果这是演戏,他们铺垫得未免太认真。
4月2日,Anthropic工程副总裁Dario的备忘录流出:「我们正在进行全面的供应链安全审查,包括收购资产的整合流程。」没有道歉,没有否认「事故」定性,但「收购资产」四个字,把Bun团队架在了火上。
那个被下载了未知次数的src.zip里,有一行被开发者截取的注释:「TODO: remove before GA」(正式版前移除)。它来自记忆系统重构模块,日期戳是3月15日——泄露前16天。
代码泄露最讽刺的遗产,或许是让所有人意识到:AI公司的「智能」,和它们防止自己出糗的能力,是两个独立的训练集。下一次npm发布前,会有多少团队检查自己的.npmignore?
热门跟贴