AI百科网 AI教程
避坑进阶

官方 Claude Code 扩展被投毒,卸载也清不掉后门

Cursor 市场里的 Claude Code 扩展被塞进 SSH 后门,在线约 11 小时,波及最多 5000 人。这篇给一份能照着查的清单:看哪些文件、查哪条进程、换哪些凭据。

本文目录 · 6 节

周四装了个扩展,名字对、图标对、发布者也对。晚上你的电脑正在往一台陌生服务器开 SSH 隧道,还把持久化写进了开机启动项。你什么都没点,只是让它被加载了一次。

这不是假设。10 月 30 日,安全研究者公开了这起投毒事件的完整技术细节。

一、发生了什么

据 The Decoder 10 月 30 日的报道,Cursor 扩展市场里的 Claude Code for VS Code 扩展被篡改,篡改版本在线约 11 个小时,Cursor 称受影响用户最多 5000 人。Anthropic 没有参与这个版本的开发。

发布技术分析的是一家叫 Phorion 的安全团队。他们给出的版本号是 2.1.313,恶意代码被注入在打包后的主文件前部,形式是一段立即执行函数。关键点在于触发条件:Node 只要加载这个文件,代码就跑起来了,比扩展正常的启动回调还早,用户不需要点任何按钮。

跑起来之后是一条四段式的链条。第一步,往用户的 SSH 授权文件里追加一把攻击者的公钥,注释写着 svc-telemetry,然后尝试打开系统的远程登录。第二步,用内置的私钥向一台固定 IP 的服务器建立反向隧道,把受害机器的 22 端口映射到对方分配的端口上,操作者就此拿到交互式 shell。第三步,在三个平台上各留一个持久化入口:Linux 用 crontab 的开机项,macOS 伪装成 com.apple. 开头的启动代理,Windows 用计划任务,失败则退回启动文件夹。第四步,收集主机名、用户名、系统架构、工作目录、Git 全局邮箱和公网 IP,再从环境变量里挑出名字匹配 KEY、TOKEN、SECRET、PASS、AWS、GCP 的条目,最多 40 个,只上报名字,不上报值。

这段代码本身写得不算精细。macOS 上它用系统命令检查远程登录状态,普通用户执行会因为权限不足报错,但报错信息的退出码是 0,脚本反而判定"已经开着",于是跳过了开启步骤。Windows 分支也有问题,一条 PowerShell 命令被塞进了写死 /bin/sh 的辅助函数。这些 bug 让实际危害打了折扣,但不构成"没事"的理由——公钥已经写进去了,隧道也建起来了。

Cursor 的处置是:下架该版本,把整个扩展市场临时下线,与相关服务商协作清除恶意包,确认没有进一步风险后恢复市场,并称没有其他扩展受影响。Phorion 补充说,同一版本号在 NPM 和 VS Code 的注册表里也被一并撤下。

二、跟你有什么关系

最近在 Cursor 里装过 Claude Code 扩展的人:直接相关,按下一节逐条查,别跳。

只在网页版或手机 App 里用 Claude 的人:跟这件事无关。出问题的是桌面编辑器的扩展包,不是你聊天用的那个入口。

团队里管开发机、发 API Key 的人:这是最该动的一类。开发机上往往存着云厂商密钥、代码仓库令牌、内部服务口令,一台机器被开了隧道,等于这一串都要重发。

用其他 AI 编程扩展的人:这件事的教训是通用的。扩展市场是供应链的一环,名字、图标、下载量都不构成安全证明。

三、今天就能照着查的五步

读到这儿,可以顺路看 之前没人攻成的 PHP 漏洞,这次连美国政府关联防火墙都沦陷了 安全公司 Dream 披露首例 PHP2Shell 实际入侵:攻击者组合两个漏洞,15 分钟内拿到防火墙最高权限,25 台服务器沦陷,其中含美国政府关联机构。暴露在公网的管理接口是最大软肋。
  1. 看版本。打开编辑器的扩展面板,找 Claude Code,看版本号里有没有 2.1.313。装过就往下走。已经升级到更高版本也要查,因为后门跟扩展版本是两回事。
  1. 查授权文件。打开用户目录下的 .ssh/authorized_keys,逐行看注释,有没有 svc-telemetry。有,就是中招了。
  1. 查持久化。macOS 看 ~/Library/LaunchAgents 下有没有 com.apple.sysmond.plist;Linux 看 crontab 里有没有带 @reboot 的陌生条目,以及 ~/.config 下有没有 .smt 和 .smtk 两个文件;Windows 看计划任务里有没有叫 SysMon 的项,以及启动文件夹里有没有 sysmon.cmd。
  1. 查进程和连接。看有没有 ssh 或 autossh 进程带着 -R 转发参数,目标指向 134.209.82.225;临时目录里有没有 .stk_ 开头的私钥文件。
  1. 有任意一条命中,按顺序处置:先杀掉那个正在重试的 shell 循环和隧道进程,再删持久化文件和启动项,再从授权文件里移除那把公钥,最后轮换凭据。轮换范围按第 4 步里被上报的变量名来定,凡是名字里有 KEY、TOKEN、SECRET 的,全部当泄露处理。

顺序不能反。先换密钥再清后门,等于给攻击者留了重新登录的窗口。

四、三个别信的说法

「卸载扩展就没事了。」 Phorion 的结论很直接:卸载扩展不会移除后门。恶意代码做的事情全部发生在扩展目录之外——授权文件、启动项、临时目录、crontab。扩展只是入口,进去之后它自己活了。

「只上报了变量名,没上报值,不算泄露。」 名字本身就是地图。知道一台机器上有 AWS 凭证、有 GitHub Token、有内部服务的 SECRET,攻击者可以针对性钓鱼或撞库;更关键的是那把公钥已经在授权文件里,对方可以直接连进来自己翻。

「官方发布者、官方名字,不会有问题。」 这次出问题的恰恰是官方发布链上的包,名字和发布者都是对的,用户没有任何可辨别的异常信号。签名能回答"这个包是谁发布的",回答不了"发布它的人当时有没有被攻破"。

五、一句话结论

装扩展这件事,风险不在你点的那一下,而在包被构建出来的那一刻——所以真正有效的动作不是"以后小心点",而是把开发机上的凭据当成会过期的东西,定期换。

延伸阅读:给 agent 的权限清单怎么列、本地 AI 工具的隐私设置、AI 时代的安全思路要换。

信息来源

本文基于公开信息整理,影响范围与处置说明以 Cursor、Anthropic 的官方公告为准;技术细节与文件路径来自第三方安全团队分析,处置前请自行核对。

下一站 · AI百科 怎么盯住比你强的模型?给它装一个倒带键 读完能理解弱审核者如何核验强 AI 的计算结果:新提出的可倒带交互证明允许验证器把模型回退到任意状态重来,效率高、不依赖密码学,关心 AI 安全机制的人值得一看。
下一篇,直接发你邮箱

每周一封,只发新教程和可复制模板。不发广告,随时退订。

复制规范引用格式,便于转载注明出处
这篇有用吗?