Cursor 的扩展市场里,上架过一个假的 Claude Code。

它在架子上待了大约 11 个小时。

最多 5000 个人把它装走了,装的时候没人觉得有问题。

官方的处置说明里有一句话,比事件本身更值得记住:仅卸载扩展,无法彻底清除风险。

【本人未实测】下面的时间、版本号、比例,来自 Cursor 10 月 30 日的安全公告和 11 月 13 日披露的调查结论。我读的是 IT之家 11 月 14 日的转述,公告原文没有逐页核对。

一块显示器上显示着代码,浅景深,只有画面中段是清楚的。
一块显示器上显示着代码,浅景深,只有画面中段是清楚的。

那 11 个小时

10 月 29 日,Cursor 发了一则公告。扩展市场里出现了一个恶意且未经授权的 Anthropic Claude Code 扩展副本。

这句话有边界。它跟 Anthropic 没关系,跟 Open VSX 也没关系。

有人拿偷来的内部凭证,把一个改过的版本摆上了官方货架。

恶意版本存续约 11 小时。两个版本号:Anthropic.claude-code 2.1.312 和 2.1.313。

发现之后,Cursor 下架了这个扩展,临时下线整个市场。同时配合云服务商,把攻击者的服务器关掉。

11 小时很短。可它足够让很多编辑器在后台自己把更新做完。

编辑器查更新,默认就是自动的。这是为了省事做的设计。这一次它变成了扩散通道。

攻击链是六环

这条链子得一节一节看。每一环单独看,都不算漏洞。

第一环,Fireworks 有一个访问密钥泄露了。

第二环,攻击者用这把钥匙,读到了 Cursor 共享存储桶里的部分数据。

第三环,这批数据里混着少量没脱敏的凭证。

第四环,凭证被用来进入 Cursor 的一部分 SaaS 工具。

第五环,在那些工具里,攻击者接触到了部分非生产代码仓库、客户支持数据,以及一些用户凭证。

第六环,拿着内部凭证,篡改版扩展上架。

从存储桶走到扩展市场,中间隔了四次权限升级。每次的起点,都是上一次落下的东西。

【个人看法】这条链子里没有一步需要攻破加密,也没有一步需要零日漏洞。它更像一条没关严的消防通道,门一扇接一扇地通到底。

机房里的一排开放式机架,蓝色网线沿银色理线架垂直走线,机架顶部贴着小标签。
机房里的一排开放式机架,蓝色网线沿银色理线架垂直走线,机架顶部贴着小标签。

三个百分比,分母在哪

官方给的三个数字,口径不一样。

最多波及 5000 名用户。这是绝对数,指装过恶意版本的人。

未脱敏凭证泄露,受影响客户不到 0.01%。

编程智能体链路追踪数据泄露的,占未开隐私模式用户的不到 0.05%。

后两个都是相对数,而且都带「不到」两个字。

【个人看法】「不到」是一个上限,不是一个估计值。写成「不到 0.05%」和写成一个确定的小数,对读者的意义完全不同。可公告只能给前者。

还有一块是空的。Cursor 没公布总用户数。分母不知道,0.05% 就换不成人数。【暂无相关资料】

反过来说,5000 这个上限倒是好理解。11 个小时里装过的人,不会超过市场当天的安装量。

隐私模式这次挡住了一半

有一句区别,读快了会漏掉。

用了隐私模式的用户,提示词和代码不受影响。这一点官方讲明了。

没开的用户,可能被拿走的是编程智能体的链路追踪数据。

追踪数据是什么,官方没定义。我按字面理解,它是智能体干活过程中的记录:你让它改哪一段,它读了哪些文件,中间调用了什么。【个人看法】这部分不含源码,但它能还原出你在做什么。

所以这次泄露的形状是:代码大概率还在,过程可能出去了。

一个开关,把用户分成了两拨。【个人看法】这件事比泄露本身更值得说。

为什么官方说卸载不够

10 月 30 日的公告里有一句操作指引。曾安装恶意版本的用户,仅卸载扩展无法彻底清除风险。

为什么,公告没解释。【暂无相关资料】

我的理解是,扩展在运行期间可能已经把东西落到了别处:配置文件、凭证缓存、后台进程。卸掉扩展,删的是入口,不是痕迹。【个人看法】

这也解释了官方为什么要求照公告逐步排查,而不是让大家点一下卸载了事。

删掉就安全了,这是使用习惯。删掉只是第一步,这是取证习惯。两个习惯这次撞在一起。

一把挂锁和串在一起的三把钥匙放在木桌上,锁梁已经从锁体里拔出。
一把挂锁和串在一起的三把钥匙放在木桌上,锁梁已经从锁体里拔出。

官方的时间表

10 月 29 日发现异常。停用泄露密钥,轮换凭证,切断未授权访问。另外预防性关停了一部分内部和产品服务。

10 月 30 日发安全公告,通知受影响方,协助吊销和轮换泄露的密钥。

11 月 1 日拦下最后一次攻击,确认事件受控。

11 月 13 日披露调查结论。受影响客户已逐一直接联系。

从发现到讲清楚,15 天。中间主动关掉自己的一部分服务,这一步不太好下决心。

【个人看法】15 天在安全事件里算快。但披露这件事本身有代价,攻击链的细节一旦公开,模仿的成本就降下来了。所以很多公司宁愿含糊。

现在能查的三件事

第一,翻扩展列表,看有没有 Anthropic.claude-code 的 2.1.312 或 2.1.313。

第二,如果你在那段时间用过 Cursor,把相关的 API Key 和访问令牌换一遍。

第三,看邮箱。Cursor 说受影响的人已经一个个通知过了。收到就是收到,没收到说明不在那批链路追踪数据里。

三件里第二件最容易被跳过。密钥不像密码,它不会提醒你换。

它只会在某天被人拿去用,而你不知道是哪个。


你用的哪个编辑器?装扩展的时候会点开看一眼发布者吗?评论区说一声。