|
Anthropic在AI安全上砸了数十亿。模型对齐、对抗攻击防护、越狱防范,甚至主导了好几项AI安全行业标准,都做了。 结果栽在一个前端入门配置上。
愚人节前,有人在npm公共仓库发现,Anthropic官方发布的@anthropic-ai/claude-code@2.1.88版本安装包里,带了一个完整的cli.js.map文件。这个source map文件里装着全量原始源码,Claude Code打磨了好几年的核心代码,就这么对全世界公开了。 没有黑客,没有内鬼,没有供应链攻击。就是一个该在生产环境关掉的配置项,没关。
注:本次泄露的是Claude Code编程CLI工具的前端/Node.js源码,不涉及Claude大模型的权重、训练和推理代码。源码版权归Anthropic所有,未经授权的下载、使用、分发均构成侵权。本文只做事件分析,不提供源码下载指引。
source map为什么能让源码“裸奔” 很多人问:一个调试用的映射文件,怎么就导致完整源码泄露了? source map是前端代码编译压缩后的“还原映射文件”。项目上线前,会把成百上千个源码文件打包、压缩、混淆成少量js文件,提升加载性能。source map就是把这些压缩后的代码还原成原始源码的"钥匙"。 但这里有个关键区别:只有携带sourcesContent字段的source map,才能1:1还原完整原始源码。这个字段是打包工具的可选配置,开启后会把编译前的全量原始源码直接写入map文件。
普通的source map只是钥匙,带sourcesContent的map文件是连钥匙带保险柜一起给了用户。拿到这个文件,几行脚本就能还原出完整的源码文件、目录结构、变量名、注释、业务逻辑,跟拿到官方源码仓库差不多——差的就是内部提交记录和分支信息。 Anthropic的失误在于:生产环境的npm发布包里,既没关source map生成,还把带sourcesContent的map文件直接发到了npm公共仓库。 拆解还原的源码:到底漏了什么? 有人说,一个CLI工具的前端代码能有多大影响? 拆完架构后发现,这次泄露的不是什么简单的命令行工具,而是Claude Code作为AI编程产品的核心运行时平台。 泄露的代码库是完整的产品级项目:4471个项目文件,1884个TypeScript/TSX源码文件,覆盖35个一级目录、86个内置命令、42个工具、20个基础服务。
1. 核心执行引擎 消息驱动的Agent Loop、QueryEngine对话核心、多轮工具调度逻辑被完整还原。这套支撑Claude Code跑超长会话、复杂多轮任务不跑偏的流程,从设计到代码全公开了。6层上下文压缩治理机制也一并泄露——触发阈值、压缩逻辑、边界规则都在里面。 2. 工具运行时协议 统一的工具协议设计、权限控制、安全执行逻辑、并发调度策略全部公开。Bash执行、文件编辑、子代理调用等核心工具的完整实现代码,连同针对prompt缓存命中率的架构设计,都被同行拿到了。 3. 平台化扩展体系 Commands、Skills、Plugins、MCP四层扩展体系的设计规则、加载逻辑、动态激活机制、隔离方案全部暴露。竞争对手可以直接基于这套设计搭建自己的AI工具扩展生态。 4. 多运行模式与工程方案 交互式/无头/远程/桥接等运行模式的编排方案、启动性能优化、多代理协作、会话持久化、远程会话架构设计,全部透明。这些经过大量用户验证的工程方案,直接拉平了同类产品的研发门槛。
复盘AI行业的几个安全盲区 这次事件不是“某个工程师忘了关配置”的偶然事故,背后是AI行业存在的几个安全盲区。 重模型安全,轻工程安全 AI圈几乎所有的资源和注意力都砸在大模型安全上:模型对齐、对抗攻击防护、越狱防范、数据隐私合规。但AI产品的最终载体依然是软件工程,最容易被突破的防线永远是基础工程细节。 投上亿资金防范模型被破解,却不愿花10分钟检查生产环境的打包配置;组建顶尖团队对抗越狱,却连发布前扫一遍产物有没有敏感文件都做不到。
高速迭代下,发布安全给效率让路 AI行业竞争激烈,Claude Code作为对标GitHub Copilot的核心产品,需要高频发版。发布环节的安全校验,在"赶版本"的压力下被持续压缩。 从还原的源码看,Anthropic的工程团队对启动性能、prompt缓存命中率做了极致优化,工程能力很强。但最基础的发布安全管控出了问题——当团队KPI都绑在"功能能不能按时上线",没人盯着"配置有没有关对"。 前端安全的"灯下黑" source map泄露不是新鲜事。国内头部银行曾因生产环境source map泄露,核心业务系统前端源码完全暴露;头部互联网公司因npm包带source map,核心业务逻辑泄露,甚至被黑产利用。很多创业公司的产品源码也因为同样的原因裸奔过。 但直到今天,多数研发团队仍然没真正意识到这个风险: 很多团队为了方便线上排查问题,生产环境开着source map,直接部署到公网 大量团队只在nginx层做了访问限制,npm包、容器镜像里照样带着完整的map文件 不少开发者根本不知道sourcesContent能直接还原完整源码,只把它当调试工具
重事后应急,轻事前防控 多数企业的安全体系重心放在“出事后怎么应急”,而不是“怎么从源头不让事情发生”。能制定厚厚的应急响应预案,却不愿在发布流程里加一道自动化安全检测。 靠人盯规范,永远堵不住。人会有疏忽,会赶进度,会有侥幸心理。Anthropic不可能没有相关开发规范,但事故还是发生了。 前事不忘,后事之师 花5分钟做个自检: 生产环境打包时,source map开着吗?map文件随产物部署到公网了吗? npm发布包、容器镜像里,ignore文件排除了.map文件、源码文件、环境配置文件吗? 发布流程有自动化的产物安全检测吗?还是全靠工程师手动检查? CI/CD流水线有发布安全门禁吗?发现敏感文件能阻断发布吗? 前端代码里有硬编码的API密钥、内部接口地址、prompt模板吗?
每一个问题都和Anthropic这次事故同源。 防护方案分两档: 个人/小团队 无强线上调试需求,生产环境直接关source map生成 确需保留的,只生成无sourcesContent的映射文件,不随公网产物部署,只放内网调试服务器或配鉴权访问 在.gitignore、.npmignore、.dockerignore中排除.map文件、源码文件、环境配置文件
企业级团队 把source map检测、敏感文件扫描、硬编码密钥排查嵌入CI/CD流水线,检测不通过直接阻断发布 明确生产环境source map使用规则、发布产物准入标准,把安全要求纳入研发流程
用自动化管控杜绝这类失误 靠人盯规范永远堵不住,那就用自动化。 这也是CoStrict在做的事——把安全管控嵌入研发全流程,从源头拦截这类事故。 针对人为疏忽导致风险上线的问题:CoStrict的CodeReview CI/CD质量门禁可以自定义扫描npm发布包、前端构建产物中的source map、源码文件、硬编码密钥、敏感配置等风险点,发现异常直接阻断发布 针对AI产品核心资产泄露的痛点:CoStrict对AI Agent、Skills、MCP工具、大模型前端应用提供专项检测,识别prompt模板、权限控制逻辑等核心资产的泄露风险。
写在最后 AI时代的安全事故,不一定是什么降维打击,也可能是最基础的细节失误。 打败你的,不一定是顶级黑客和0day漏洞,也许是忘了关的配置、漏掉的检查、省掉的步骤。 看完这篇文章,今天下班前花5分钟查一下你们的生产环境包,有没有不该出现的source map文件。 别让打磨了几年的产品,被一行忘了改的配置泄了密。 如果你也认同严肃编程理念,欢迎深度参与CoStrict开源建设 https://github.com/zgsm-ai/costrict
在 GitHub 上为我们点亮 ⭐️: 每一个 Star 都是我们前进的动力。 加入开发者社区: 添加小助手微信,备注 “加群” 与上千位开发者交流实战经验
|