Cursor 官方市场里那个 Claude Code 扩展被人改过,最多 5,000 人装了带后门的版本
这件事不是「有人做了个假冒插件」,是 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,然后往两个方向走:
- 往
~/.ssh/authorized_keys(Windows 还包括C:\ProgramData\ssh\administrators_authorized_keys)追加一把标注svc-telemetry的公钥,试开本地 SSH 服务,建反向隧道到134.209.82.225 - 做持久化: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 跑),脚本会删掉恶意扩展、持久化项、隧道进程和那把公钥,有残留就以非零状态退出。顺序是:
- 先断网再跑
- 跑脚本,看退出码
- 评估要不要重装系统——Cursor 自己把这个选项摆出来了
- 从另一台干净的机器上,把受影响机器能碰到的凭据全换一遍:API key、云 token、GitHub token、SSH 私钥、数据库密码、活跃会话
- 扩展升到 2.1.314,再跑一次上面的自查
泼冷水
- Cursor 没说清攻击者是怎么把包传上市场的。 公告只讲了发现、下架、重建市场、轮换自己的密钥,没交代入口。Anthropic 那边的说法是「不是我们系统被黑,是有人拿到了 Cursor 市场的发布权限」,两家都没给出完整链条。这意味着同类事情可能还有下一次。
- 隧道没建起来不等于没事。 公钥留在
authorized_keys里,只要哪天那台机器开了 SSH 服务、或者攻击者后来拿到了别的入口,这把钥匙就还是钥匙。删扩展不删公钥,等于换锁不换芯。 - 5,000 这个数是 Cursor 自报的下载上限,不是确认受害数。 真正的受害面要看有多少人跑了脚本、又有多少台机器当时是管理员权限启动 Cursor 的。
- AI 编程工具的扩展生态整体没有代码签名和来源校验。 这类工具的权限是「读写文件 + 执行 shell」,比普通插件高一档,但分发渠道的审核强度跟普通插件一样。
具体建议
- 今天花两分钟跑一次自查。没命中就把扩展升到 2.1.314 收工,命中就按上面五步走。
- 把「扩展/插件清单」当成一份资产来管:谁装的、什么时候装的、能碰到哪些凭据。一人公司最容易犯的错是三年下来装了四十个插件,一个都说不清来历。
- 长期凭据别放在环境变量里裸奔。这次载荷只采集了环境变量的名字,但 Cursor 明确说了这不排除后续通过后门读到值。
- 别把「官方市场 + 官方 ID」当成安全信号。这次被打的就是官方市场里的官方 ID。
原文:https://cursor.com/blog/claude-code-extension-security-notice
原文出处 · 事实以此为准
Cursor 官方安全公告 · 恶意 Claude Code 扩展(2.1.312 与 2.1.313)