ARTICLE · 1289773
官方插件被投毒:AI 工具链的信任缺口
我是老薛。今天来聊聊一件跟每个用 AI 写代码的人都有关的事:一个挂着「官方认证」的 AI 编程插件,被人换成了后门,在官方市场里挂了 11 个小时。我关心的不是这次丢了多少数据,而是一个更根本的问题——当 AI 助手住进你的电脑,它到底拿着谁的钥匙,又是谁在给它换锁。一次只讲一个事情。
2026 年 10 月 29 日,Cursor 的 VS Code 扩展市场里,挂着 Anthropic 名义的 claude-code 扩展有两个版本被投毒:2.1.312 与 2.1.313,涉及 Windows 与 macOS 构建。Cursor 给出的时间窗口是太平洋时间当天 02:27 到 13:35,换算成北京时间是 10 月 29 日 17:27 到 10 月 30 日 04:35,约 11 小时。
影响面:Ars Technica(Dan Goodin,10-30)引述业内说法称至多 5000 名用户可能受影响;需要说清楚的是,The Register 指出这个数字来自未具名的业内人士,并没有得到 Cursor 或 Anthropic 的确认。攻击者的发布账号是怎么被拿下的,截至报道时两家公司都没有说明。

事件时间线,2026-10-29 ~ 10-31
处置方面,Cursor 的动作是完整的:下架恶意版本、关闭市场、重建、轮换密钥,并配合托管商把攻击者的服务器下线;10 月 30 日太平洋时间 11:30 更新了公告,修订了感染指标并明确了受影响版本。安全公司 Phorion 在 10 月 31 日更新公告,把 2.1.312 也列入受影响范围(最初只识别了 2.1.313)。
你可能会说:我又不写代码,这事跟我有什么关系。关系在于结构是同构的。今天被换掉的是一个编程插件,明天可以是任何一个「官方商店里的 AI 助手」——能读你文件、能联网、默认自动更新、装了就没人再检查的那一类。区别只是它拿到的权限大小,不是风险的有无。
把载荷拆开看,它做了三件事:向 ~/.ssh/authorized_keys 追加一枚注释为 svc-telemetry 的 Ed25519 公钥;尝试打开本机的 SSH 服务;建立一条反向 SSH 隧道。持久化方面,macOS 用 LaunchAgent,Windows 用计划任务(并尝试以 SYSTEM 权限运行),后台脚本大约每 60 秒重试一次连接。
但最关键的不是它做了什么,是它怎么被执行的。
Phorion 与 OpenSourceMalware 的分析都指出,一段大约 66 行的代码被前置(prepend)在压缩后的 extension.js 文件开头。这意味着 Node 一加载这个文件,代码就执行了——早于扩展正常的 activate 回调,也早于任何用户操作。你不需要打开它,不需要和它对话,不需要点任何按钮。编辑器启动完成,它就已经跑完了。

从市场到钥匙的一条链,全程静默
它采集并回传的信息包括:主机名、用户名、操作系统与架构、home 目录与工作目录、全局 git 邮箱、公网 IP,以及最多 40 个匹配 KEY、TOKEN、SECRET、PASS、AWS、GCP 的环境变量的名字——注意是名字,不是值。
这一点要说得非常准确:就现有分析看,这更像一次踩点,而不是把你的密钥搬走。但环境变量的名字本身就是一张地图——它告诉攻击者这台机器上有哪些门、门牌叫什么。AWS_PROD_SECRET 这个变量名被拿走,和钥匙被拿走之间,只差一步。
有一个细节值得单独讲。在 macOS 上,脚本用 systemsetup -getremotelogin 去检查远程登录状态,但普通权限下这条命令会打印一条「需要管理员访问权限」的错误,退出码却是 0。脚本的逻辑是只在看到输出为 Off 时才去开启远程登录,于是这一步被直接跳过了。而且开启本机 SSH 服务本身就需要管理员权限。
Cursor 的说法是:除非是以管理员权限启动编辑器这种极不常见的情况,开启 SSH 这一步会失败,攻击者也就没法通过隧道登录。但 Cursor 同时明确表示,这不能当成松一口气的理由——公钥已经写进去了,持久化已经装上了,主机信息已经回传了。
翻译成人话:如果远程登录本来就是开着的,或者你哪天因为别的原因打开了它,这扇门就是现成的,而且钥匙已经在别人手里。「这次没炸」是运气,不是防御。
还有一个更现实的问题:卸载扩展不等于清理干净。公钥、LaunchAgent 或计划任务是落在系统里的,删掉插件不会把它们带走。
判断一:安全审查的对象,正在从「AI 的输出」转向「AI 的运行环境」。
过去两年,所有人讨论 AI 编程安全,问的都是同一个问题:它生成的代码有没有漏洞。这个问题没错,但它假设了 AI 工具本身是可信的。这次事件说明这个假设不成立。AI 编程助手天然继承了编辑器的全部本地权限——你的源码、终端、环境变量、配置文件,它都能读。于是攻击面从「审查一段代码」扩大到了「审查一整条供应链 + 一个高权限进程」。这是量级上的变化,不是程度上的变化。
判断二:「官方」这个标签的含义变了,它证明的是身份,不是完整性。
一个挂着官方发布者名字的扩展,能证明的是「这个发布账号是官方的」,证明不了「这份二进制是官方构建的」。这次连版本号都出现了官方确实发过 2.1.312 这种情况——版本号、发布者名字,都不构成完整性的证据。完整性只能靠签名、校验和、可复现构建来证明。用户看到的「官方认证徽章」,在供应链攻击面前是一个会被借用的东西,不是一道防线。
顺着这条往下走一步:企业采购 AI 工具时,该向供应商要的就不只是功能清单,而是三样东西——签名的安装包、可核对的校验和、一份软件物料清单(SBOM)。出事的时候,能回答「我装的那一份到底是什么」的,只有这三样。
判断三:自动更新不是便利设置,是治理决策。
Cursor 的扩展默认自动更新,用户可以在设置里改。这一条在这次事件里是放大器:从恶意版本上线到被发现,11 小时里没有人需要做错任何事,威胁就完成了分发。把「什么时候更新」的决定权交出去,在一个拥有你本地全部权限的软件上,本质上是把变更窗口交给别人定。企业侧尤其如此——这不是个人习惯问题,是变更管理问题。
一句话总结:AI 助手越能干,它需要拿到的权限越大;而权限是单向积累的,给出去容易,收回来难。这才是这次事件真正该让我们记住的东西。

三道防线,按顺序做,成本从低到高
第一道:安装前——把更新的决定权拿回来。
关闭扩展的自动更新,或者至少设置延后更新;生产相关机器上锁定版本号,变更走审批。 企业侧建内部扩展镜像与版本白名单,新版本先在小范围跑几天再全量。 只从可信渠道安装,安装前看一眼发布者;对关键工具,留存安装包的校验和。
第二道:凭据隔离——别把钥匙放在 AI 工具够得着的地方。
开发机上不长期存放生产环境的长期密钥,改用短期凭证与 SSO。 密钥放进凭据管理器,而不是 .env 或长期环境变量;这次事件里环境变量名被拿走,就是最好的提醒。 环境变量命名不要自带语义。叫 AWS_PROD_SECRET 的变量名,本身就是给攻击者的导航。
第三道:运行时最小权限——给它副本,不给主钥。
把 AI 编程工具放进容器、沙箱或专用低权账号里跑,让它拿不到你主账号的钥匙串。 它能读的目录做成白名单,不要把整个 home 暴露给它。 组织层面把 AI 工具纳入资产管理:谁装了什么版本、跑了什么权限,要有台账。出了事你才知道去哪查。
一个心智模型,比任何清单都管用:把 AI 编程助手当成「一个有钥匙的实习生」,而不是「一个 App」。你会让实习生拿着公司所有门卡吗?不会。那你也不该默认一个自动更新的插件持有全部权限。
如果你在 10 月 29 日那天从 Cursor 市场安装或更新过 claude-code 的 2.1.312 / 2.1.313(macOS 或 Windows),先做这一步:
macOS:grep -qs svc-telemetry ~/.ssh/authorized_keys && echo "发现 svc-telemetry 公钥" — 没有输出即未命中。
Windows(PowerShell):Select-String -Path "$env:USERPROFILE\.ssh\authorized_keys" -Pattern "svc-telemetry" -Quiet — 返回 True 即命中。
命中之后的处理顺序(Cursor 官方建议加安全团队通行做法):先跑 Cursor 提供的 remediate-macos.sh / remediate-windows.ps1,它会移除扩展、持久化项、运行中的隧道进程与攻击者公钥;然后在端点与网络遥测里检索官方公布的感染指标;命中的主机先隔离;最后从一台可信的系统上,轮换这台主机能够触达的所有凭据与会话。
没命中的也别只松一口气——顺手把扩展自动更新关掉,这是这次事件里成本最低、收益最确定的一条改进。
严谨声明:文中「至多 5000 名用户」为业内匿名人士估计,未经 Cursor 或 Anthropic 官方确认;攻击者如何取得发布账号权限,截至报道时两家公司均未说明;Anthropic 技术人员 Felix Rieseberg 在 X 上关于「非 Anthropic 系统或员工设备被攻破」的表述属个人发言,不是公司声明;Ars Technica 10-30 报道称截至当时 Anthropic 未向用户发出公开警告,后续如已发布请以官方公告为准。主要来源:Ars Technica(Dan Goodin,2026-10-30)《Anthropic VS code extension on Cursor backdoored for nearly 12 hours》;Cursor 安全公告(2026-10-29 首发,2026-10-30 11:30 PT 更新);Phorion 安全公告(2026-10-31 更新,追加 2.1.312);The Register 相关报道。老薛的判断部分为基于上述公开事实的分析,不代表对任何一方的指控。我是老薛,我们下期见。















































































