Anthropic公司出现重大失误,其官方npm包中意外暴露了AI编程工具Claude Code的完整源代码。
安全研究员发现代码泄露
周二上午,安全研究员邵朝帆发现了这一泄露事件并向外界披露。Claude Code源代码的快照很快被备份到GitHub仓库中,该仓库已被fork超过41500次,确保了代码的广泛传播,使Anthropic的失误成为AI和网络安全社区的收获。
泄露原因分析
根据GitHub上传的Claude Code暴露源码显示,泄露实际上源于Claude Code的npm包中包含的映射文件对未混淆TypeScript源码的引用。映射文件通常用于将打包代码连接回原始源码。该引用指向托管在Anthropic的Cloudflare R2存储桶上的zip压缩包,研究人员能够轻松下载和解压。
泄露内容规模庞大
压缩包中包含大量信息:约1900个TypeScript文件,超过51.2万行代码,完整的斜杠命令库和内置工具等。不过,Claude Code的源码并非完全神秘,虽然这次泄露让我们看到了直接来自Anthropic的Claude Code最新版本,但并非揭露此前完全保密的内容。
此前已有逆向工程
Claude Code此前已被逆向工程,相关项目甚至建立了专门的网站来暴露Claude Code中未向公众发布或共享的隐藏部分。换句话说,这次泄露为CCLeaks运营者提供了有用的对比点和更新来源,随着人们深入挖掘暴露的代码,可能会发现一些新的秘密。
技术失误引发关注
更有趣的是,Anthropic的某个人犯了一个严重错误,在发布配置中留下了映射文件。发布映射文件通常是不被推荐的做法,因为它们用于调试混淆或打包的代码,在生产环境中并不必要。不仅如此,正如这个例子所示,映射文件很容易被用来暴露源代码,因为它们是原始代码的参考文档。
专家建议加强管道检查
软件工程师Gabriel Anhaia在对暴露代码的深度分析中指出,这应该提醒即使是最优秀的开发者也要检查他们的构建管道。Anhaia在Claude Code泄露分析中写道:"package.json中一个错误配置的.npmignore或files字段就可能暴露一切。"
官方回应承认错误
Anthropic在给媒体的声明中承认了这一点,表示确实是人为错误导致了这次事故。Anthropic发言人在邮件中表示:"今天早些时候,Claude Code的一个版本包含了一些内部源代码。这是由人为错误导致的发布打包问题,而非安全漏洞。我们正在推出措施防止此类事件再次发生。"发言人还补充说,没有客户数据或凭据涉及或暴露。
后续处理情况
截至目前,最初将Claude Code源码上传到GitHub的用户已将其仓库改为托管Claude Code的Python功能移植版本,而非Anthropic直接暴露的源码,理由是担心因托管Anthropic的知识产权而承担法律责任。不过,仍有大量fork和镜像供想要检查暴露代码的人使用。
当被问及是否考虑要求人们删除其暴露源码的仓库时,Anthropic除了之前的声明外没有更多表态。
Q&A
Q1:Claude Code源代码是如何泄露的?
A:泄露源于Anthropic在Claude Code的npm包中错误包含了映射文件,该文件引用了未混淆的TypeScript源码。映射文件指向Anthropic的Cloudflare R2存储桶上的zip压缩包,研究人员能够下载并解压获得完整源代码。
Q2:这次泄露包含了哪些内容?
A:泄露内容包括约1900个TypeScript文件,超过51.2万行代码,以及完整的斜杠命令库和内置工具。虽然规模庞大,但Claude Code此前已被逆向工程,所以并非完全保密的内容。
Q3:Anthropic对此次泄露事件如何回应?
A:Anthropic承认这是由人为错误导致的发布打包问题,而非安全漏洞,并强调没有客户数据或凭据暴露。公司表示正在推出措施防止类似事件再次发生,但对于是否要求删除GitHub上的相关仓库没有进一步表态。