Cursor里的Claude Code带了后门:自动更新送上门,卸载清不掉
10月29日,Cursor扩展市场里的Claude Code插件被人掉了包。挂上去的是带后门的版本,可扩展ID是正牌的Anthropic.claude-code,徽章一样不缺,版本号照常往上走,前后挂了约11个小时。用户不需要点任何东西,自动更新就能把它送到电脑上。
Cursor是眼下最热的AI编程工具之一,一个让AI写代码的编辑器。Claude Code插件在微软自家商店装机量超过2900万,这次只有走Cursor自有渠道的被投毒,微软商店的用户没事。按Cursor估计,最多5000台机器中招,数字出自公司自己的通告,没见独立核对。但这件事暴露的问题,跟每个在电脑上装过AI插件的人都有关系。

这个后门阴的地方,是它不需要你使用它。攻击者没动插件原有功能,只在文件最前面加了66行代码,比插件主体先运行。编辑器一开就触发,不用打开Claude,不用发一句话。
它先摸清这台机器,主机名、Git邮箱、公网IP,外加最多40个名字里带KEY、TOKEN、SECRET等字样的环境变量名,只拿名字不拿内容,但足够判断机器上放着什么云服务凭证。然后留钥匙,往SSH配置文件里追加一把攻击者控制的公钥,备注svc-telemetry,这个文件管的就是谁能免密登录你的电脑。接着向外挖反向隧道,断了每60秒重试一次,好让防火墙后面也进得来。最后写个开机自启脚本,重启也还在。
所以卸载插件清不掉它。插件只是箱子,钥匙和自启脚本已经落在系统里。

更膈应人的是,最关键的隧道压根没挖成。macOS那步没拿到管理员权限,匹配输出的判断还写错了,Windows那步硬编码了Linux的shell路径,根本跑不起来。攻击者自己的代码有bug,后门的门没打开。
可钥匙照留,持久化照做,机器信息照发去了攻击者的服务器。哪台机器本来就开着SSH远程登录,比如为了远程开发,那把钥匙现在就能用。
这次没出大事,不是锁牢,是贼手抖。
事情过去,还有两笔账没算清。官方名义的插件怎么会被掉包?这类事防不防得住?
先说掉包。扩展ID、发布者、认证徽章,都是市场展示的数据。攻击者只要能往市场的存储或发布流程里写东西,恶意包就能顶着正牌名字上架。被篡改的2.1.312和正牌包版本号相同、文件不同,有人推测被动过手脚的不是发布账号,是市场自己的基础设施。至于攻击者怎么拿到写入权限,Cursor到今天没交代。公告里只留下一句「恶意版本并非Anthropic开发」。没说错,但没说到点上,用户看到的就是Anthropic的ID和徽章。名字的担保,从来不是来源的担保。
再说防。微软商店从2022年底起给每个扩展做仓库签名,安装时校验。但仓库签名只能证明包从这家市场出来时没被改过,市场自己被攻破,它照样给恶意包签字。真正管用的是发布者签名,Anthropic自己给包盖防伪章,改过就对不上。微软2023年就提过,至今没成行业默认。Cursor这边,签名校验是可选项,安装冷却默认0小时,新版本进市场没有任何缓冲,自称的自动供应链扫描让被篡改的构建活了11个小时。
控制松着有它的道理,市场图的是插件多、更新快,管得严就伤生态。难以接受的是,代价要等用户的机器付过一次,才有人看见。
Cursor的善后不算慢,当天下架、关停整个市场、轮换密钥、封掉攻击者的服务器,放出排查方法和清理脚本,承诺逐一联系受影响用户。可只要没交代清楚攻击者怎么进来的,用户就没法判断会不会有下一次。
AI编程插件比普通扩展凶得多,它装在凭证最密的机器上,能读文件、读SSH配置、执行终端命令,还握着模型API密钥。而整个行业正在推「让AI自己装插件」,DeepSeek八月开源的Agent框架号称一切皆插件,社区插件很快堆到几千个,豆包工作的宣传里,第一步也是让AI用一句指令从GitHub装个开源技能。每装一个插件,都是把电脑钥匙递给一段你没读过的代码。以前这么递,没人看见。这次有人真配了把钥匙。
10月29日后在Cursor里装过或自动更新过Claude Code的,别只看现在装的是哪个版本,它可能已悄悄更回干净版。按Cursor公告查,macOS打开 ~/.ssh/authorized_keys,找备注svc-telemetry的公钥,Windows查用户目录和ProgramData下的authorized_keys,再看扩展目录里有没有2.1.312、2.1.313的残留文件夹。命中了,卸载没用,先隔离这台机器,跑官方清理脚本,在另一台可信设备上改密码、轮换密钥,条件允许就考虑重装。

不用Cursor的,两件事。把浏览器和编辑器里的AI扩展盘一遍,用不上的、来路想不起来的,删掉。下回AI助手说「帮你装个技能」,先问谁发布的、从哪个市场来。
市场只挂了11个小时,可svc-telemetry那把钥匙一旦落进配置文件,就不会跟着下架公告一起失效。去翻一眼,没有,跟你无关。有,换钥匙、跑脚本,一步别省。这次没出大事,是贼写错了代码。下一回,手未必抖。
