跳到正文
ChatGPT Pro 俱乐部
博客

Claude Code 扩展后门事件:Cursor 市场被投毒 11 小时,附自查指南

40 阅读约 8 分钟读完

这次的 Claude Code 扩展后门事件,问题不出在模型,而出在扩展的分发渠道上。10 月 29 日,Cursor 自家的扩展市场里出现了一个被篡改的 Claude Code 扩展(版本号 2.1.313),扩展名和发布者都显示为 Anthropic 官方,在线约 11 个小时,期间最多可能有 5000 名 Cursor 用户装上了它。

对每天用 Cursor + Claude Code 写代码的 vibe coding 玩家来说,这件事值得花 10 分钟看完:它不需要你和 Claude 说一句话,只要扩展被加载就会执行;更麻烦的是,把扩展升级到新版并不能清除它留下的后门。下面把时间线、原理、影响范围和自查步骤一次讲清楚。

一句话结论

  • 受影响的只有 Cursor 扩展市场的用户:VS Code 官方市场、Open VSX 和 Anthropic 官方渠道的版本都是干净的。
  • 危险版本:从 Cursor 市场安装的 2.1.313,以及同一时段 Cursor 市场分发的 2.1.312;干净版本是 2.1.314 及以上。
  • 如果中招:仅仅升级或卸载扩展不够,必须手动删除攻击者的 SSH 公钥和开机自启项,并在另一台干净的机器上轮换所有凭据。

1)Claude Code 扩展后门事件时间线

综合 Cursor 公告与安全公司 StepSecurity 的分析,整个过程如下(括号内为北京时间):

时间(UTC)事件
10/27 20:26(10/28 04:26)干净的 2.1.312 正常发布到 Open VSX
10/29 约 09:27(10/29 17:27)被篡改的 2.1.313 出现在 Cursor 扩展市场;同一时段 Cursor 市场分发的 2.1.312 也被换成了恶意包
10/29 20:35(10/30 04:35)Cursor 下架恶意版本,并把整个扩展市场临时关停排查、轮换内部密钥
10/30 01:07(10/30 09:07)Anthropic 在 Open VSX 和 VS Code 市场发布干净的 2.1.314
10/30攻击者的服务器在云厂商配合下被下线
太平洋时间口径为 10 月 29 日 02:27–13:35,约 11 小时。

最早发现异常的是安全公司 Phorion,随后 OpenSourceMalware、StepSecurity 等团队跟进做了逆向分析。

Cursor 插件市场 Claude Code 扩展被植入后门示意图
示意:外表完好的扩展,在加载时悄悄打开了一条通往攻击者的 SSH 隧道。

2)这个后门做了什么

攻击者没有改动 Claude Code 扩展的正常功能,而是在 extension.js 的最前面塞了一段几十行的加载器(恶意文件比正版大了约 7 KB)。扩展一被 Cursor 加载,这段代码就会自动运行,不需要任何点击,也不依赖 npm 安装脚本。它主要做了四件事:

  • 植入 SSH 公钥:往 ~/.ssh/authorized_keys 里写入一把注释为 svc-telemetry 的攻击者公钥。
  • 尝试打开 SSH 服务:macOS 上执行 systemsetup -setremotelogin on,Windows 上尝试安装 OpenSSH Server。
  • 建立反向隧道并持久化:通过 ssh -N -R(或 autossh)把本机 22 端口反向映射到攻击者服务器,并设置开机自启,大约每分钟重试一次。
  • 回传主机信息:用户名、主机名、公网 IP、Git 邮箱,以及名字里带 KEY、TOKEN、SECRET、PASS、AWS、GCP 的环境变量名称。

注意最后一点:它收集的是变量名而不是变量值。安全研究者的判断是,攻击者想先摸清“这台机器上有哪些值钱的凭据”,再通过 SSH 隧道登录进来手动取货。这也是为什么后续的凭据轮换必不可少。

3)为什么大多数人“侥幸”没有被远程登录

这段恶意代码本身有 bug。在 macOS 上,它先用普通权限执行 systemsetup -getremotelogin 查询 SSH 状态,结果拿到的是“需要管理员权限”的报错,而不是预期中的“Off”,于是跳过了开启 SSH 的步骤;在 Windows 上,它通过 /bin/sh 去调用 PowerShell,而标准 Windows 根本没有这个路径,安装 OpenSSH 同样失败。

所以对多数没有以管理员身份运行 Cursor 的用户来说,隧道大概率没能真正打通。但公钥、开机自启项和信息回传都已经发生了:只要你哪天自己打开了“远程登录”,后门就会立刻生效。不能因为“没被连上”就放着不管。

4)各方说法与尚未回答的问题

  • Anthropic:技术人员 Felix Rieseberg 表示,这不是 Anthropic 系统或员工电脑被攻破,而是有人利用了 Cursor 扩展市场的访问权限发布了篡改版本,官方渠道不受影响。
  • Cursor:确认发现后立即下架,并把整个扩展市场临时关停,排查其他扩展、轮换密钥后才恢复;内部调查未发现其他扩展被篡改。但 Cursor 至今没有解释攻击者是如何以 Anthropic 的名义把包传上去的。
  • 数字存在分歧:“最多 5000 人”这个数字被多家媒体引用,但 The Register 将其描述为安全评论人士的说法,并非官方确认;实际有多少台机器成功建立了隧道,目前没有公开数据。
  • 早期误报:事件刚曝光时,有消息称 npm、Open VSX 和微软 VS Code 市场也被波及,后来已被更正为只有 Cursor 市场受影响。另外,BleepingComputer 的报道只提到 2.1.313,而 Cursor 和 StepSecurity 的通报都指出同一时段 Cursor 市场的 2.1.312 也是恶意包,自查时两个版本都要看。

5)Cursor 用户自查与清理步骤

如果你在 10 月 29 日前后通过 Cursor 安装或自动更新过 Claude Code 扩展,建议按下面的顺序检查:

第一步,查公钥。macOS / Linux 在终端执行 grep svc-telemetry ~/.ssh/authorized_keys;Windows 打开 %USERPROFILE%\.ssh\authorized_keys 搜索同样的字符串。有输出,就说明中招了。

第二步,查扩展目录。在 Cursor 的扩展目录里找名为 anthropic.claude-code-2.1.312-* 或 anthropic.claude-code-2.1.313-* 的文件夹,并在其中的 extension.js 里搜索攻击者 IP 134.209.82.225。

第三步,查持久化痕迹。

系统需要检查并删除的项目
macOS~/Library/LaunchAgents/com.apple.sysmond.plist(伪装成系统服务的名字)
Windows计划任务 SysMon、启动文件夹里的 sysmon.cmd、%USERPROFILE%\.config\smt.cmd
Linuxcrontab 里的 @reboot 条目
通用~/.config/.smt、~/.config/.smtk、临时目录下的 .stk_ 开头文件(隧道私钥)
清单整理自 StepSecurity 与 Cursor 的通报;Cursor 也提供了 macOS 与 Windows 的一键清理脚本。

第四步,换成干净版本。卸载问题扩展,安装 2.1.314 或更新的版本。再强调一次:卸载只去掉扩展本身,上面那些开机自启项和公钥不会跟着消失。

第五步,轮换凭据。在另一台确认干净的电脑上,把这台机器能接触到的凭据全部换掉:GitHub/GitLab Token、CI/CD 密钥、云平台 AccessKey、SSH 私钥、npm/PyPI 发布令牌,以及 Anthropic、OpenAI 等 API Key。如果日志显示隧道曾经连通过,重装系统比手工清理更稳妥。

开发机自查清理与凭据轮换示意图
示意:查找并清除隐藏的钥匙,再换上一套新钥匙。

6)怎么看:AI 编程工具正在成为新的供应链入口

这件事真正值得警惕的地方,是攻击面在变化。过去的供应链攻击多半盯着 npm、PyPI 这类包仓库;而现在,AI 编程助手的扩展天然拥有读写代码、执行终端命令、访问环境变量的高权限,又通过各家 IDE 自建的扩展市场分发,审核链路比官方仓库更短,一旦某个环节出问题,影响的就是一大批手里握着生产凭据的开发者。

对个人开发者,我们的建议是:

  • 重要扩展优先走官方渠道:Claude Code 本身也可以直接用官方 CLI,不必完全依赖 IDE 扩展。
  • 关键扩展关闭自动更新,新版本发布后观望一两天再升。
  • 不要以管理员身份运行编辑器:这次后门之所以多数没打通,恰恰就是因为缺少管理员权限。
  • 凭据最小化:别把长期有效的高权限 Token 直接放在 shell 环境变量里,能用短期凭据就用短期凭据。

对团队来说,则应该把开发机上的 IDE 扩展纳入资产清单和监控范围,而不是只盯服务器。

小结

这次 Claude Code 扩展后门事件的影响范围有限,攻击代码也写得不算高明,但它清楚地说明了一点:AI 编程工具越强大,它的扩展和分发渠道就越值得攻击者下功夫。如果你是 Cursor 用户,花几分钟按上面的步骤自查一遍;如果你用的是官方 CLI 或 VS Code 官方市场,可以放心,但不妨借这个机会检查一下自己的凭据习惯。

参考来源

发表评论

邮箱不会公开,带 * 的是必填项。