Cursor 官方市场里那个 Claude Code 扩展被人改过,最多 5,000 人装了带后门的版本

2026-11-01 安全Claude CodeCursor供应链

这件事不是「有人做了个假冒插件」,是 Cursor 自家市场里挂着真实扩展 ID 的那一条被换成了篡改版。10 月 30 日 Cursor 和 Anthropic 各自出面说明,Reuters 也跟进了。如果你在 10 月 29 日那天用 Cursor 更新过 Claude Code 扩展,下面这两条命令值得现在就跑一遍。

发生了什么

  • 涉事版本:Anthropic.claude-code 的 2.1.312 和 2.1.313,只针对 macOS 和 Windows
  • 时间窗:10 月 29 日太平洋时间 2:27 到 13:35,约 11 小时(北京时间 10 月 29 日 17:27 到 10 月 30 日 4:35)
  • 影响面:最多 5,000 人。Cursor 说会直接联系受影响用户
  • 攻击者没动原有功能代码,只在 extension.js 开头塞了一段加载器,装完自动运行,不需要你跟它对话

它干了什么

收集主机名、用户名、系统与架构、主目录、环境变量名称、工作目录、Git 邮箱、公网 IP,然后往两个方向走:

  1. 往 ~/.ssh/authorized_keys(Windows 还包括 C:\ProgramData\ssh\administrators_authorized_keys)追加一把标注 svc-telemetry 的公钥,试开本地 SSH 服务,建反向隧道到 134.209.82.225
  2. 做持久化:macOS 装 ~/Library/LaunchAgents/com.apple.sysmond.plist,Windows 建名叫 SysMon 的计划任务(试图以 SYSTEM 运行,失败就退回启动文件夹里的 sysmon.cmd),后台每 60 秒重试一次隧道

Cursor 自己也承认,恶意代码在 SSH 那一步有 bug:开 SSH 服务需要管理员权限,而扩展在绝大多数机器上没有,所以隧道大概率没建起来。但公钥加进去了、持久化装上了、主机信息也发出去了——所以它给的处置口径是「不管隧道成不成,都按受影响处理」。

先查,两行

macOS:

grep -qs svc-telemetry ~/.ssh/authorized_keys && echo "svc-telemetry key found" || echo "No key found"

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" }

顺手再看三个地方:~/Library/LaunchAgents/com.apple.sysmond.plist、~/.config/.smt 与 ~/.config/.smtk(这两个是载荷留下的文件)、以及有没有你没启动过的 ssh -N -R 或 autossh -M 0 进程。

查到了怎么办

Cursor 给了分平台脚本(remediate-macos.sh 用当前用户跑,不要 sudo;remediate-windows.ps1 用管理员 PowerShell 跑),脚本会删掉恶意扩展、持久化项、隧道进程和那把公钥,有残留就以非零状态退出。顺序是:

  1. 先断网再跑
  2. 跑脚本,看退出码
  3. 评估要不要重装系统——Cursor 自己把这个选项摆出来了
  4. 从另一台干净的机器上,把受影响机器能碰到的凭据全换一遍:API key、云 token、GitHub token、SSH 私钥、数据库密码、活跃会话
  5. 扩展升到 2.1.314,再跑一次上面的自查

泼冷水

  • Cursor 没说清攻击者是怎么把包传上市场的。 公告只讲了发现、下架、重建市场、轮换自己的密钥,没交代入口。Anthropic 那边的说法是「不是我们系统被黑,是有人拿到了 Cursor 市场的发布权限」,两家都没给出完整链条。这意味着同类事情可能还有下一次。
  • 隧道没建起来不等于没事。 公钥留在 authorized_keys 里,只要哪天那台机器开了 SSH 服务、或者攻击者后来拿到了别的入口,这把钥匙就还是钥匙。删扩展不删公钥,等于换锁不换芯。
  • 5,000 这个数是 Cursor 自报的下载上限,不是确认受害数。 真正的受害面要看有多少人跑了脚本、又有多少台机器当时是管理员权限启动 Cursor 的。
  • AI 编程工具的扩展生态整体没有代码签名和来源校验。 这类工具的权限是「读写文件 + 执行 shell」,比普通插件高一档,但分发渠道的审核强度跟普通插件一样。

具体建议

  1. 今天花两分钟跑一次自查。没命中就把扩展升到 2.1.314 收工,命中就按上面五步走。
  2. 把「扩展/插件清单」当成一份资产来管:谁装的、什么时候装的、能碰到哪些凭据。一人公司最容易犯的错是三年下来装了四十个插件,一个都说不清来历。
  3. 长期凭据别放在环境变量里裸奔。这次载荷只采集了环境变量的名字,但 Cursor 明确说了这不排除后续通过后门读到值。
  4. 别把「官方市场 + 官方 ID」当成安全信号。这次被打的就是官方市场里的官方 ID。

原文:https://cursor.com/blog/claude-code-extension-security-notice

原文出处 · 事实以此为准
Cursor 官方安全公告 · 恶意 Claude Code 扩展(2.1.312 与 2.1.313)
阅读原文 ↗