发生了什么

Cursor 的安全公告称,10 月 29 日凌晨 2:27 到下午 1:35(太平洋时间),Cursor 扩展市场里出现了被篡改的 Anthropic.claude-code 2.1.312 和 2.1.313,面向 macOS 与 Windows。恶意代码在扩展加载时运行:把一枚标注为 svc-telemetry 的 Ed25519 公钥追加到 ~/.ssh/authorized_keys,尝试启用本地 SSH 服务,建立到 134.209.82.225 的反向隧道,并每 60 秒重试。

它还会安装持久化:macOS 写 LaunchAgent com.apple.sysmond,Windows 写 SysMon 计划任务或 Startup 脚本;同时把主机名、用户名、系统与架构、工作目录、Git 邮箱、公网 IP,以及最多 40 个「看起来像密钥」的环境变量名发到攻击者服务器。Cursor 说攻击者服务器已被下线,反向隧道和上报目前不可用;在多数没有管理员权限的机器上,开启 SSH 服务这一步会失败,但公钥、持久化和上报仍然发生。

为什么卸载不够

恶意代码把持久化写在扩展目录之外:LaunchAgent、计划任务、Startup 脚本、cron 都可能留下。卸载或升级扩展不会自动删掉这些。Anthropic 随后发布了 2.1.314,但升级只替换扩展文件,不清理已经落地的后门。Cursor 的公告也明确提醒:卸载可能不足,payload 会留下独立运行的脚本。

自查与处置清单

先确认版本。macOS / Linux 可以用下面的命令;Windows 在 Cursor 的扩展目录里看 anthropic.claude-code 的版本号。

cursor --list-extensions --show-versions | grep -i claude-code
ls ~/.cursor/extensions | grep -i anthropic.claude-code
# 查有没有被写入的公钥
ssh-keygen -lf ~/.ssh/authorized_keys
  • 查 authorized_keys:macOS 看 ~/.ssh/authorized_keys,Windows 还要看 C:\ProgramData\ssh\administrators_authorized_keys,找 svc-telemetry 或未知指纹。
  • 查持久化:macOS 的 ~/Library/LaunchAgents/com.apple.sysmond.plist;Windows 的 SysMon 计划任务、Startup 下的 sysmon.cmd;Linux 的 @reboot cron。
  • 查进程与连接:找 ssh / autossh 到 134.209.82.225 的连接,先留日志再断。
  • 轮换凭证:从一台干净机器改密码、吊销 token、换 SSH key;不要在被感染的机器上操作。
  • 评估重建:如果 payload 确实执行过,重装比手工清理更可靠。

团队层面该改的规则

这次事件暴露的不是某一个扩展的问题,而是「市场里的东西默认可信」这个假设。团队至少要做四件事:给 IDE 扩展建白名单,只允许已知发布者;关键扩展锁版本,关掉自动更新;把扩展安装纳入终端日志与告警;新版本先在隔离环境跑一周再推给全员。个人开发者至少做到两条:不用管理员权限跑 IDE,定期看 authorized_keys。

供应链攻击不需要攻破 Anthropic,只需要在一个市场里放一个看起来像 Anthropic 的包。