摘要 10 月 29 日,Cursor 自家的扩展市场里出现了一个被恶意改过的 Claude Code 扩展 2.1.313,挂了约 11 个小时。Cursor 说这个版本不是 Anthropic 开发的,最多 5000 名用户受影响。它一加载就把攻击者的 SSH 钥匙写进电脑、装上开机自启,并把主机信息发出去,所以只卸载扩展清不掉。好在恶意代码有 bug,多数 Mac 和 Windows 电脑上攻击者没法真的登录,攻击服务器也已下线;但钥匙和自启脚本还留在电脑里,装过的人要自查清理。
扩展市场里写着 Anthropic、名字叫 Claude Code、版本号也接得上,多数人点“更新”时不会多看一眼。这次的问题就出在这一步。
发生了什么:Cursor 市场里挂了约 11 个小时的冒牌扩展
Cursor 是一款在 VS Code 基础上改出来的 AI 编辑器,有自己的扩展市场。按 Cursor 的安全公告,太平洋时间 10 月 29 日 2:27 到 13:35(北京时间 29 日 17:27 到 30 日 04:35),这个市场里挂着一个被恶意改过的 Anthropic.claude-code 2.1.313。Cursor 明确说这个版本不是 Anthropic 开发的,最多 5000 名用户受影响,会逐一联系。
发现后,Cursor 先下架了这个版本,又把整个扩展市场临时关掉,确认其他扩展没被动过,轮换了自己的密钥、重建市场后才重新上线;同时和托管攻击服务器的云厂商一起把那台服务器下线了。Cursor 要求所有用户把 Claude Code 扩展升级到 2.1.314。这个改版是怎么进到市场里的,公告没有说,Anthropic 截至发稿也没有单独发声明。

受影响的范围一度说法不一。最早披露的两家安全公司里,Phorion 写的是 Open VSX(Cursor、Windsurf 等编辑器常用的开源扩展市场)上的扩展被植入后门;Cursor 发公告后,另一家 OpenSourceMalware 更正了文章,写明出问题的扩展来自 Cursor 扩展市场,Open VSX 上的版本、npm 上的 @anthropic-ai/claude-code 包和微软 VS Code 市场上的扩展都不是恶意的;Cursor 也说,没有证据显示其他版本或官方分发渠道受影响。Phorion 的原文目前没有更正,Open VSX 上当时有没有过 2.1.313,也还没有哪一方说清楚。所以必须自查的,是在上面这段时间里从 Cursor 扩展市场装过、或自动更新到 2.1.313 的人;用其他渠道的人,花十秒查一下也不吃亏,办法见后文。
一加载就动手:它做了哪几件事
扩展(给编辑器加功能的插件)和编辑器一样,以你本人的权限运行,能读写你的文件、执行命令。被改过的 2.1.313 和正常版本几乎一模一样,自带的 Claude Code 程序也是官方原版,只在主文件 extension.js 的最前面插了 66 行代码。编辑器一加载这个扩展,这段代码就抢在正常代码之前运行,不需要你跟 Claude 说一句话。按两家安全公司的拆解和 Cursor 的公告,它依次做了五件事:
- 塞钥匙。 往
~/.ssh/authorized_keys里追加一把攻击者的公钥,备注写成像运维账号的svc-telemetry。SSH 是远程登录电脑的标准方式,这个文件记的就是“谁拿着哪把钥匙可以直接登录这台电脑”。 - 开门。 试着打开本机的 SSH 服务:Mac 上打开“远程登录”,Windows 上安装并启动 OpenSSH 服务。
- 挖隧道。 用扩展里自带的另一把私钥,从你的电脑主动连到攻击者的服务器 134.209.82.225,建一条反向隧道,之后攻击者就能顺着这条线连回你电脑的 22 端口。
- 扎根。 装开机自启:Mac 上是一个伪装成苹果组件的
com.apple.sysmond,实际执行~/.config/.smt脚本;Windows 上是名为 SysMon 的计划任务,建不了就往“启动”文件夹放一个sysmon.cmd。隧道断了每 60 秒重连一次。 - 报信。 把主机名、用户名、系统、当前目录、Git 邮箱、公网 IP,以及最多 40 个名字里带 KEY、TOKEN、SECRET、PASS 等字样的环境变量(程序运行时读取的配置项,不少人把 API Key 放在这里)的名字发给攻击者。只发名字不发值,但足够让对方知道这台电脑上存着哪些云平台和 API 的密钥。

反向隧道是这套后门的关键。连接是从你的电脑主动往外发起的,家里的路由器和公司防火墙通常都会放行;攻击者不用直接找到你的电脑,只要守着自己那台服务器,就能借这条现成的线登录。OpenSourceMalware 没发现它再下载别的程序,出错时也一律悄悄吞掉,扩展照常加载,用户看不出异样。
为什么卸载扩展清不掉
发现装了坏扩展,第一反应通常是卸载。问题在于,上面五步留在电脑上的东西都不在扩展目录里:钥匙写在 ~/.ssh/authorized_keys,自启脚本和隧道私钥在 ~/.config/ 下,开机自启项在系统的启动配置里,挖隧道的进程一开始就脱离编辑器在后台运行,关掉编辑器也还在。卸载只删掉了扩展本身。Cursor 在公告里也写明,卸载扩展可能不够,要按清理步骤把钥匙、自启和隧道进程一起删掉。

不幸中的万幸:代码有 bug,服务器已下线
这次多数人没有被真正登进来,靠的是攻击者自己的失误。Phorion 发现,Mac 版在开“远程登录”之前,先用 systemsetup -getremotelogin 查当前状态,但普通用户运行这条命令只会得到一句“需要管理员权限”,而且照样报告运行成功。脚本只在看到 Off 时才去开,于是把“没权限查”当成了“已经开着”,跳过了开门这一步。Windows 版也有毛病:开 SSH 的命令被交给了写死的 /bin/sh,在普通 Windows 上跑不起来。Cursor 的结论是,除非 Cursor 是用管理员权限启动的,这一步都会失败,多数 Mac 和 Windows 电脑上攻击者没法通过隧道登录。再加上攻击服务器已被下线,隧道和信息上报现在都连不上了。
但这不等于没事。钥匙已经写进去了,开机自启已经装上了,主机信息已经发出去了。如果你的 Mac 原本就开着“远程登录”,或者以后某天打开它,那把钥匙依然能用。所以 Cursor 的建议是:不管怎样,都照清理步骤做一遍。
3 分钟自查:装过 2.1.313 怎么办
先确认要不要查:在北京时间 10 月 29 日 17:27 到 30 日 04:35 之间,从 Cursor 扩展市场安装或更新过 Claude Code 扩展的人需要查。Cursor 公布的改版安装包有两个,分别是 Apple 芯片的 Mac 和 64 位 Windows;没有公布 Linux 版的改版安装包,Linux 用户装过 2.1.313 的话,同样可以用下面的 Mac 命令查一下。用 Windsurf 等走 Open VSX 的编辑器、在 10 月 29 日到 30 日前后更新过 Claude Code 扩展的人,也可以花十秒跑一下第 2 步的检查,没找到就可以放心。
- 看版本。 在 Cursor 的扩展列表里看 Claude Code 是不是 2.1.313。已经自动升到 2.1.314 也不代表没事,后两步照样要查。
- 查钥匙。 这是 Cursor 给的判断标准:看 SSH 授权文件里有没有
svc-telemetry。提示没找到(No key found),Cursor 认为这台电脑没有受影响。命令照抄 Cursor 公告,Mac 打开“终端”运行:
grep -qs svc-telemetry ~/.ssh/authorized_keys && echo "svc-telemetry key found" || echo "No key found; machine not impacted"
Windows 打开 PowerShell,把下面两行一起粘贴运行:
$files = "$HOME\.ssh\authorized_keys", "C:\ProgramData\ssh\administrators_authorized_keys" | Where-Object { Test-Path $_ }
if ($files -and (Select-String svc-telemetry $files)) { "svc-telemetry key found" } else { "No key found; machine not impacted" }
- 查自启。 Mac 看
~/Library/LaunchAgents/com.apple.sysmond.plist、~/.config/.smt、~/.config/.smtk在不在;Windows 看有没有名为 SysMon 的计划任务,“启动”文件夹里有没有sysmon.cmd,用户目录\.config\下有没有smt.cmd。
找到了,就用 Cursor 公告里提供的清理脚本处理:Mac 以受影响的用户身份运行,不要用 root;Windows 用管理员身份打开 PowerShell 运行。脚本会删掉扩展、自启项、隧道进程和那把钥匙,有残留会报错。之后把扩展升级到 2.1.314,并在另一台干净的电脑上更换这台电脑能接触到的 SSH 密钥、API Key、云平台令牌和登录会话。Cursor 特别提醒,后门只收集了环境变量的名字,不代表攻击者之后没有通过它拿到别的东西。工作电脑还应该告诉公司的安全团队,必要时重装系统。
装扩展这一步,也是供应链的一环
这次的冒牌扩展没有利用任何系统漏洞,它借的只是“Anthropic”“Claude Code”这两个名字和一个接得上的版本号。AI 编程扩展本来就要读写代码、执行命令、用到你的密钥,权限比一般插件大得多;分发它的市场一旦出问题,名字写着官方也挡不住。普通开发者能做的,是清楚自己的扩展从哪个市场来,留意编辑器厂商的安全公告,少把长期有效的密钥放在环境变量里。至于这个改版究竟怎么混进了 Cursor 市场,还要等 Cursor 或 Anthropic 给出更多说明。