ARTICLE · 1326808
Cursor惊天投毒!Claude插件暗藏后门,5000人中招卸载也没用

作者 | 江辰
编辑 | 陈明
太平洋时间2026年10月29日凌晨2点27分。
大多数北美程序员还在熟睡他们合上的MacBook和未关机的Windows工作站里,当红AI代码编辑器Cursor正在后台安静地运行。
鼠标和键盘都静静搁在桌上
因为默认开启了“自动更新”,成千上万台电脑自动从Cursor官方扩展市场拉取了一份更新包。那是开发者每天都要用到的王牌AI编程助手,Anthropic官方标识的Claude Code扩展(版本号2.1.312与2.1.313)。
屏幕没有任何闪烁但就在编辑器加载这个插件的一瞬间,主入口文件extension.js最顶端被人偷偷塞进去的66行JavaScript恶意代码,已经抢先跑完了全程。
扩展加载后,你的电脑用户名、工作目录、Git邮箱、环境变量名被打包发往远方的陌生服务器;你的系统深处被塞进了一把属于黑客的“免密钥匙”;一套独立运行的启动脚本,也可能已写进系统,约每60秒重试回连。
这一夜,持续11个小时的投毒窗口,最多波及了约5000名开发者。
第二天,安全专家又发出警告:哪怕你的插件已经自动升级到了安全的修复版,哪怕你亲手卸载了Claude Code,那个后门依然活在你的电脑里。
01零点击的背叛:你甚至不需要打开对话框
为什么中招的人完全没有察觉?
在过去,木马想要发作,多少得骗你点开一个奇怪的链接,或者运行一个伪装成安装包的文件。但在现代AI编程工具里,这步彻底省了。
Cursor是基于VS Code生态打造的AI代码编辑器,里面有一个自带的扩展市场,就像手机里的应用商店。很多程序员会在里面安装Anthropic出品的Claude Code插件,用来辅助写代码、改Bug。
这次出事的,正是挂着正牌anthropic.claude-code标识的更新包。
OpenSourceMalware等安全团队拆解样本后发现,黑客几乎原封不动地保留了正版插件的全部功能和界面。你用它写代码,它依然聪明、流畅唯独在主程序入口的最开头,黑客插了66行立即执行的加载器代码。
在Node.js的运行逻辑里,这段代码写在扩展正式激活函数(activate())之前。用户不必点开Claude的聊天窗口,Cursor加载扩展时,恶意代码便会执行。
“自动更新”机制又扩大了暴露范围

▲ 社区开发者推测:约11小时内最多5000名用户受影响,自动更新可能是扩大暴露范围的主要原因
很多程序员有个习惯:让插件在后台自动静默升级。平时这是为了省事和安全,但在供应链投毒面前,自动更新直接变成了黑客的洲际导弹发射井。从太平洋时间凌晨2点27分上线,到下午1点35分被Cursor紧急下架,整整11个小时里,多达5000名老用户连手指都没动一下,后门就已经顺着网线自动送货上门。
02门垫下的备用钥匙,与救了命的“低级Bug”
这66行代码钻进电脑后,究竟干了什么?
如果把你的电脑比作一栋房子,黑客一共干了三件事:拍照踩点、在门垫下藏备用钥匙、每分钟拧一次门把手。
第一步是踩点代码会迅速搜集你的主机名、系统架构、家目录、Git配置邮箱、公网IP,以及那些名字长得像密码或令牌(Token)的环境变量名,然后通过明文HTTP请求,悄悄发给黑客控制的服务器(134.209.82.225)。
第二步最狠它会找到你电脑里的~/.ssh/authorized_keys文件,往里面追加一把攻击者的公钥,还在后面贴心地加了个注释:svc-telemetry(伪装成系统的遥测服务)。
对不熟悉网络协议的读者来说,SSH就像是电脑的远程VIP通道,而authorized_keys就是门口保安手里的“白名单”。黑客把自己的公钥写进这个文件,就相当于在你家大门的地垫下塞了一把配好的备用钥匙。只要你家的大门(SSH服务)开着,黑客随时能大摇大摆地走进来,而且拥有和你一模一样的系统权限。
第三步,为了防止你家大门没开,恶意代码会尝试强行打开你电脑的SSH远程登录服务,并建立一条反向隧道,主动连回黑客的服务器。
但就在这最惊险的第三步,黑客自己写出了一个让人哭笑不得的代码Bug,阴差阳错救了大批Mac用户。
Phorion安全团队在逆向代码时发现了这个滑稽的细节:在macOS上,恶意脚本试图用普通用户权限运行systemsetup -getremotelogin命令,来检查远程登录是不是关着的(包含“Off”字样)。
然而,苹果系统运行这条命令需要管理员权限。没有权限时,系统会直接吐出一句报错提示:“需要管理员权限”,但偏偏返回了一个代表成功的状态码“0”。
黑客写的脚本傻乎乎地去检查这段报错文字里有没有“Off”这个词,当然没有!于是脚本自信满满地判断:“太棒了,这台Mac的远程登录已经开着了!”接着就直接跳过了开启SSH服务的步骤。Windows版本同样在路径和权限上频频翻车。
因此,在多数以普通用户权限运行Cursor的电脑上,攻击者无法通过这条隧道直接登录。
但千万别高兴得太早因为持久化这一步已经落地了
03为什么说“更新和卸载”纯属自我安慰?
10月30日凌晨,干净的2.1.314版本上线。很多程序员松了一口气:我的插件已经自动升级到最新版了,或者我干脆把插件卸载了,总该安全了吧?
网络安全专家Kevin Beaumont(网名GossiTheDog)当即泼出一盆冰水:自动更新换掉的只是插件,后门根本没走!

▲ 安全研究者Kevin Beaumont发帖确认:夜间推送的自动更新版本不会移除此前植入的后门与侦察活动,每一台受影响电脑都必须手动清理
为什么?这就涉及到软件工程里一个最容易被忽视的盲区。
当你更新或卸载一个编辑器插件时,编辑器只负责清理“插件文件夹”里的东西。但刚才那66行代码在运行的第1秒,就已经跳出了插件文件夹,在用户目录和系统调度器里“借壳下蛋”了:
- 在Mac上
,它往用户的启动目录里塞了一个名叫 com.apple.sysmond.plist的文件(故意模仿苹果官方系统进程的名字),配合隐藏在~/.config/.smt里的脚本; - 在Windows上
,它创建了一个名叫 SysMon的系统计划任务,并在开机启动目录里留了后手; - 在Linux上
,它直接写进了 @reboot的定时任务表。
这些东西,就像是黑客在你家客厅墙上钉死的一个隐形闹钟。每隔60秒,这个闹钟就会响一次,脱离Cursor编辑器独立运行,尝试拿着那把私藏的钥匙去连黑客的服务器。
你把快递盒(恶意插件)扔进了垃圾桶,但从快递盒里爬出来的蟑螂(持久化任务和SSH公钥),早就钻进你家厨房的冰箱底下筑巢了。
安全厂商Expel在真实客户环境中抓到了铁证:就在Cursor官方宣布下架毒插件、关闭暴露窗口整整8个小时之后,他们监控的一台客户Mac电脑上,依然爆发了由这个残留后门触发的恶意活动!
哪怕Cursor官方已经联合云服务商拔掉了黑客服务器(134.209.82.225)的网线,让这个每60秒响一次的闹钟暂时打不通电话;但那把写着svc-telemetry的备用钥匙,依然插在你电脑的authorized_keys锁孔里。只要未来某天你在公共Wi-Fi下打开了远程登录,或者内网里有另一台机器失守,这把钥匙随时会被再次拧动。
04十天前的惊悚镜像:一颗毒插件如何潜伏一年,反噬云巨头?
有人可能会问:黑客折腾这么大动静,连管理员权限都没拿到,只塞了把钥匙、偷了点配置文件,至于这么紧张吗?
如果你觉得这只是虚惊一场,不妨把日历往回翻10天。
就在这次事件爆发前不久的2026年10月19日,欧洲云计算巨头OVHcloud刚刚经历了一场教科书级别的惊魂劫案。那起案件的完整链条,简直就是今天Cursor中毒者未来的“恐怖预告片”。
巴黎时间10月19日下午2点47分,OVHcloud官方GitHub仓库里,5个历史正式版本的命令行工具(ovhcloud-cli)安装包,突然被人用自动化脚本偷偷掉包成了带毒的木马程序。在94分钟里,约250名开发者和企业流水线下载了毒包。
黑客是怎么拿到欧洲云巨头官方仓库修改权限的?
OVHcloud与StepSecurity事后顺藤摸瓜,查出了一个让人倒吸一口凉气的真相:被黑客利用的,是OVHcloud旗下一名工程师的个人GitHub账号。而这名工程师之所以失守,是因为整整一年前的2025年10月20日,他在自己的个人MacBook上,安装了一个名叫color-picker-universal(取色器)的恶意VS Code扩展!
历史在这里形成了诡异的重合
那个臭名昭著的GlassWorm黑客组织,当年就是通过这个不起眼的取色器插件,在这名工程师的MacBook上注册了一个基于macOS LaunchAgent(plist文件)的后台持久化服务,跟今天Cursor里Claude Code 2.1.313用的手法一模一样!
这个后门在工程师的MacBook里安静地潜伏了整整一年,偷走了他的GitHub密钥。直到一年后,黑客突然收网,用他的权限攻破了OVHcloud的官方发布渠道。
而最讽刺、最让人汗毛直立的闭环来了:被黑客掉包的OVHcloud官方工具,里面塞进的envchecker窃密模块,头号搜刮目标是谁?
正是Anthropic的Claude Code和Cursor!
逆向报告显示,那个木马一旦运行,除了偷AWS、Docker和SSH私钥,会直奔程序员电脑里的~/.claude/.credentials.json(Claude凭证)、~/.claude/history.jsonl(Claude Code的本地交互历史),以及Cursor编辑器的核心状态数据库state.vscdb!
不过,那帮黑客在OVHcloud案中也露出了马脚:他们没走官方流水线,而是在自己的笔记本电脑上把恶意代码粘贴进工作区,直接用普通命令手工编译了Go语言程序。结果忘了加版本号注入参数,导致木马一查版本就显示version: undefined,还带着+dirty(脏工作区)标记,被安全团队一眼识破。
但你看懂这条“贪吃蛇”式的死亡闭环了吗?
用恶意IDE插件种下Mac启动项后门
潜伏数月偷走核心开发者凭证
攻破上游官方软件仓库或市场
投毒给成千上万名开发者
再去搜刮更多人的Claude和Cursor凭证!
在黑客眼里,程序员的电脑早就不是一台普通的办公机了。上面装满了企业的云主机钥匙、数据库密码、核心源码;而拥有高权限、能读写全盘代码、还绑定了各种API密钥的AI编程助手,已经成了黑客眼中最肥美的“超级金库”。
05悬而未决的追问,与每位开发者的自救清单
回到10月29日的Cursor投毒案。
事件发生后,Cursor官方反应不可谓不快:紧急下架毒包、一度直接关停整个扩展市场做全面审计、轮换全部密钥、重建市场上线,并确认微软VS Marketplace、npm及Open VSX官方渠道均未受此次投毒影响(早期部分媒体误传Open VSX受牵连,后已公开更正)。

▲ Cursor在官方博客发布安全通告,明确指出2.1.312与2.1.313为恶意构建版本,并提供排查与修复脚本
Anthropic方面也迅速澄清:自家系统和员工电脑均未被攻破,恶意包由攻击者利用Cursor市场访问权限发布,Anthropic未参与构建。
但直到今天,开发者社区里依然回荡着一个最核心的追问:攻击者究竟是怎么拿到权限,在Cursor官方市场里顶着anthropic.claude-code的金字招牌发布更新的?
当“正版发布者身份”加上“零延迟自动更新”,程序员对工具链最底层的信任防线,被撕开了一道口子。过去我们总以为,只要不乱装野鸡插件、认准大厂官方标志就万无一失;现在残酷的现实告诉我们,你最信任的官方更新管道,本身就可能成为攻击面。
如果你在北京时间10月29日17:27至10月30日04:35之间打开过Cursor,并且安装过Claude Code扩展,请立刻放下手头的事,按官方指引逐项排查:

▲ 安全社区整理的一句话排查指令:检查authorized_keys中的svc-telemetry标记,并在干净设备上轮换凭证
- 查“备用钥匙”
打开终端(Mac/Linux)或PowerShell(Windows),检查你的 ~/.ssh/authorized_keys文件(Windows还需检查C:\ProgramData\ssh\administrators_authorized_keys)。看看里面有没有带着svc-telemetry注释的陌生公钥,或者核对是否存在指纹为SHA256:0Z6R+DF64Do2nwQic8a7kkfDLNNk4IiK+2U2Rci4htk的密钥。若发现匹配项,应先隔离受影响主机,再按官方指引清除未授权密钥、持久化任务和隧道进程,并评估是否重建系统。 - 拔掉“隐形闹钟”(清除持久化)
- Mac用户
:检查 ~/Library/LaunchAgents/目录下有没有伪装成苹果组件的com.apple.sysmond.plist,以及~/.config/下有没有隐藏的.smt、.smtk文件。 - Windows用户
:打开任务计划程序,查找有没有名叫 SysMon的任务,并检查开机启动(Startup)目录里的sysmon.cmd以及~/.config/smt.cmd。 - Linux用户
:检查 crontab -l里有没有奇怪的@reboot任务。(Cursor官方通告中也已提供一键清理脚本remediate-macos.sh与remediate-windows.ps1。) - 换锁(轮换凭证)
如果确认中招,仅仅删掉后门还不够。因为你的环境变量名和基础信息可能已经外泄,请务必换一台干净的电脑,把受影响机器上保存过的GitHub Token、云厂商密钥(AWS/阿里云等)、SSH密钥以及各类API Key全部轮换重设。
升级到2.1.314只需要一秒钟但要揪出那个每60秒跳动一次的幽灵,需要你亲手掀起地垫,把那把不属于你的钥匙扔出去。















































































