一个插件在编辑器市场躺了十一小时,五千名开发者的机器被塞进后门

首页 / AI资讯 / AI智能体

0:00
0:00
1x
定时

十月二十九日,一款标着anthropic.claude-code、版本号2.1.313的扩展出现在Cursor的插件市场和Open VSX注册表里。它在架上待了大约十一个小时,下载量最高到五千次。安全公司Phorion最先在一台客户的Mac上发现异常,随后确认这个包同时针对Windows、macOS与Linux。恶意代码只有六十六行,插在正常扩展代码之前,编辑器一加载就执行,用户不需要打开对话框,也不需要向AI提任何问题。

六十六行代码做了什么

根据多家安全机构披露的分析,这段脚本的第一步是收集环境信息:主机名、本地用户名、操作系统与CPU架构、公网IP、全局Git邮箱,以及最多四十个名称匹配KEY、TOKEN、SECRET、PASS、AWS、GCP等模式的环境变量名。注意它拿的是变量名而不是值。仅凭这份清单,攻击者就能知道这台机器上有哪些凭证、下一步该往哪里使劲。

第二步是持久化。脚本向用户的SSH授权文件追加一个标记为svc-telemetry的公钥,尝试启用本地SSH守护进程,并与134.209.82.225的8099端口建立反向隧道。为了在重启后继续存活,它在macOS上创建LaunchAgent的plist,在Windows上创建计划任务和启动文件夹脚本,在Linux上写crontab,每六十秒重试一次连接。

第三步是把收集到的信息POST回远程服务器。整个链条没有漏洞利用,没有提权,全靠用户对“官方扩展”的信任。这次后果没有更严重相当偶然:恶意程序自身有缺陷,加上多数主机开启本地SSH需要管理员权限,隧道通常建不起来。但公钥写入、启动项安装、信息外发多数是成功的,不能因为隧道没通就判定机器干净。

品牌成了信任锚,制品本身没人验

事件初期的舆论一度指向Anthropic系统被入侵,Cursor在安全警报里明确否认,称这些版本并非由Anthropic开发。Anthropic技术团队成员Felix Rieseberg补充,一名恶意行为者利用对Cursor市场的访问权限发布了被篡改的副本,官方渠道不受影响,安全团队的David Dworken也确认未涉及系统被入侵。性质由此从“厂商被攻破”变成“注册表投毒”。

这也是AI编程工具今年第三次以相似方式出事。模式高度一致:一个中间分发渠道被攻破或被仿冒,一个可信品牌名把载荷带过了用户的怀疑。开发者判断一个扩展能不能装,依据通常是发布者名字和下载量,而不是签名、构建可复现性或发布者身份绑定。安全机构给出的比喻很直接:AI编程扩展是新的npm,信任高、采用快、验证薄。

这个类比的另一半同样成立。npm生态用了多年才建立起锁文件、审计、签名与私有源这套组合,IDE扩展市场至今没有同等级的约束。更麻烦的是权限模型:一个编码助手天然需要读写工作区、执行终端命令、访问网络,这些权限安装时一次性授予,之后不再逐次询问。用户以为自己装的是一个聊天窗口,实际交给它的是整台开发机的钥匙。

五千台机器背后是整条交付链

Cursor把受影响用户上限估在五千,这个数字听起来不大,但要看这五千台机器是什么。开发工作站上通常放着源码、云平台凭证、部署密钥和会话令牌,任何一台都可能成为进入CI/CD流水线、内部Git仓库和云账号的跳板。

企业侧的处置清单因此变得具体。检查~/.ssh/authorized_keys里有无svc-telemetry标签;检查macOS的LaunchAgents与LaunchDaemons、Windows任务计划程序、Linux的crontab里有无指向该IP的条目;在代理、EDR与DNS日志里回查三十天内到8099端口的出站流量;匹配敏感命名的环境变量全部轮换,不管值有没有被传走。

还有一条容易被忽略:卸载扩展不等于清除后门。恶意脚本已经把持久化机制写进系统,扩展只是入口。Cursor提供了补救脚本,但脚本能否覆盖所有持久化位置,取决于各家的终端环境。这也是这类事件真正的成本所在,修复动作要一台一台做,而不是点一次“卸载”。

插件市场缺的不是审核,是可验证性

事后复盘时,被问得最多的是恶意包究竟怎么进的市场,是否源于Cursor自身漏洞。Cursor没有回应。从公开信息看,攻击者利用的是发布权限,而不是绕过代码扫描,这意味着加强静态检测并不能解决问题:六十六行脚本本身不复杂,混淆也不高,它能过是因为它出现在一个被信任的发布身份下。

可验证性的做法在别的生态里已经有样本。签名与发布者身份绑定,让用户能确认这个制品确实来自声称的作者;构建可复现,让第三方能重算出同一个二进制;版本锁定与漂移告警,让“突然出现的2.1.313”触发告警而不是被当作一次常规更新。这三件事都不新,难的是让市场方承担成本。对以增长速度为先的AI编辑器市场,这类投入的回报周期很长。

采购侧可以先用低成本手段补位。给团队建一份AI编码工具与扩展的资产台账,记录发布者、分发渠道、版本与权限范围;对扩展实行白名单,只允许从官方市场安装指定版本;把IDE扩展纳入终端安全的产品范围,与浏览器插件同等对待。这些动作不能防住下一次投毒,但能把暴露窗口从十一小时压到更短。

给Agent时代的权限做一次清算

把视角拉远,这起事件真正提示的不是某个市场的审核疏漏,而是权限授予方式与Agent能力之间的错配。一个能读代码、能跑命令、能联网的助手,其权限半径已经接近一个运维账号,但它的安装体验仍然像一个浏览器小工具:一次点击,永久授权,没有逐次确认,没有最小权限选项。

这种错配会随着Agent承担更多任务而放大。当智能体开始自行安装工具、调用外部服务、在后台跑长任务,权限的授予点会从“人装插件”扩散到“Agent装插件”,审核链条更长,可观测性更差。企业接下来要补的,不只是扩展白名单,还包括Agent行为日志、工具调用的出站审计、以及敏感凭证的隔离存放。五千台机器是一次提醒,代价还算可控;下一次如果发生在自动化流水线上,暴露的就不只是开发机。

素材来源:WIRED、The Hacker News、安全星图、BlockBeats 发布时间:2026-11-03