夜雨聆风学习资料网

ARTICLE · 1286435

Cursor 官方插件被塞后门,11 小时,最多 5000 人中招

Cursor 官方插件被塞后门,11 小时,最多 5000 人中招

10 月 30 日太平洋时间凌晨 2 点 27 分,Cursor 的 VS Code 扩展市场里多了一个版本的 Claude Code。版本号 2.1.313,发布者写着 Anthropic。到当天下午 1 点 35 分被撤下来,前后 11 个小时。

这不是 Anthropic 发的。

最先发现问题的是安全公司 Phorion:这个版本的扩展包里被塞进一段代码,作用是往开发者的机器上留一个 SSH 后门。Cursor 随后确认,受影响的用户最多 5000 名,会逐个联系。

它干了什么

那段代码被放在扩展主文件的最前面。Node 一加载这个文件它就跑起来,比扩展正常启动还早,用户什么都不用点。

它一共做了四件事。

第一,往 ~/.ssh/authorized_keys 里追加一把攻击者控制的密钥。这把钥匙的备注写着 svc-telemetry,看着像某个正常的服务账号。

第二,尝试打开本机的 SSH 远程登录,再建一条反向隧道连到攻击者的服务器。

第三,想办法长期留下来。macOS 上写 LaunchAgent,Linux 上写一条开机自启的 cron,Windows 上建计划任务,失败就往启动目录里放脚本。后台脚本大约每 60 秒重试一次建隧道。

第四,把收集到的东西通过 HTTP 发到攻击者服务器上的一个接口。收集的内容有主机名、用户名、操作系统、CPU 架构、主目录路径、当前工作目录、Git 配置里的邮箱和公网 IP。

还有最多 40 个环境变量的名字。注意是名字不是值,它按 KEY、TOKEN、SECRET、AWS、GCP 这类关键词去匹配变量名,只把名字记下来。你的密钥内容不会被这样拿走,但攻击者能看出你机器上挂着哪些服务。

该扩展是以编辑器本身的权限运行的。它一加载,你本地的文件、源码和工具链配置就都在它的视野里。

攻击者写错了一行

这次危害没有进一步扩大,靠的是攻击者自己的一个 bug。

在 macOS 上,这段代码想先查一下远程登录有没有开,用的是系统自带的 systemsetup -getremotelogin。这条命令前面忘了加 sudo。普通用户跑它会得到一句报错,而且退出码还是 0。代码接着判断输出里有没有 Off,有才去执行下一步的开启命令。报错里没有这个词,于是这一步直接跳过。

结果是:如果这台 Mac 本来就没开远程登录,后门就建不起来。开启远程登录本身也需要管理员权限,而扩展在绝大多数 macOS 和 Windows 机器上并没有这个权限。

Cursor 的说法是,除非是极少数用管理员权限启动 Cursor 的情况,隧道那一步都会失败。

但另外三件事不受影响。钥匙照样塞进去了,持久化照样装上了,信息照样发出去了。而且如果这台机器本来就开着远程登录,或者后来自己开了,后门一样能用。

到底谁被黑了

这是讨论区吵得最凶的地方。Anthropic 的工程师 Felix Rieseberg 把话说得很直白:不是 Anthropic 的系统被攻破,也不是员工的笔记本被黑,是有人拿到了 Cursor 市场的发布权限,用这个权限传了一份改过的副本上去。Anthropic 官方渠道发的版本都没事,受影响的只有 Cursor 用户。

有人在这条下面补了一句:那它算不算官方版本?它确实是同一个开发者名下的包,是一次带签名的版本更新,只是供应链被人动了。

Cursor 这边的动作是:发现后立刻下架并阻断分发,然后出于谨慎把整个 VS Code 扩展市场关停,把访问记录审了一遍,确认其他扩展没有被同样手法篡改,轮换了自己的密钥,之后才恢复。它还联合托管攻击者服务器的云服务商把那台服务器下线了,所以反向隧道和信息上报现在都不通。

至于那个恶意包是怎么被放上市场的,Cursor 目前没有说明。

升级没用,得自己清

这一点最要紧:把扩展更新到最新版,是无法清掉已经装上的那些歪门邪道的。

原因是持久化和密钥都不在扩展目录里,它们在你的用户目录和系统自启动项里。扩展卸载了,它们还在。

要查的地方就几个。先看 ~/.ssh/authorized_keys 里有没有备注 svc-telemetry 的那一行,有就删掉。再看 macOS 的 LaunchAgent 目录、Linux 的 crontab、Windows 的任务计划程序和启动目录,有没有名字可疑的条目。Cursor 在公告里给了清理脚本和具体步骤。

讨论区有人提到这个扩展的安装量超过 2700 万次。那是总安装量,跟这 11 小时里真正装上恶意版本的人数不是一回事,但能说明一件事:这类东西一旦出问题,波及面不会小。

讨论区在吵什么

吵得最多的是以后还信不信官方渠道。有人劝大家只用官方构建,立刻被怼回来:这次不就是官方构建吗,同一个开发者发布的签名更新,是供应链被黑了,不是你下载错了地方。

也有人把它和几年前的 SolarWinds 事件放在一起看,觉得是同一类问题又演了一遍。

另一拨人在交换自己的做法。有人把工作目录挂进容器里跑,构建工具全放进 Dockerfile。也有人推荐更彻底的方案,用 gVisor 或者干脆上虚拟机做隔离。理由是编辑器扩展拿到的权限等于你自己拿到的权限,靠运气不如靠边界。


视野决定终点,与君共勉。如果本文对您有帮助,不妨动动手指点下 👍 和 💗,让更多人看到,谢啦!

欢迎关注 前沿信标。

回首页,搜索你想要的文档

在首页搜索框输入关键词,快速定位资料

文库首页搜索指引 立即搜索

相关学习资料