Cursor 市场里的「Claude Code」:信任根在分发信道
10-29 Cursor 市场短窗上架恶意 Anthropic.claude-code 2.1.312/2.1.313:主机侦察、svc-telemetry SSH 钥、反向隧道与持久化。非 Anthropic 失陷;Microsoft Security 拆攻击链;The Verge 引约 5000 可能安装。切口:代理栈供应链从 pip 扩到 IDE 扩展市场。
编码代理把「写代码」和「动本机」叠在同一进程里之后,扩展市场就不再是装主题和语法高亮的边角货架——它是凭据、仓库与 SSH 的入口。2026 年 10 月 29 日,Cursor 安全公告写明:自家 VS Code Extension Marketplace 上,恶意修改过的 Anthropic.claude-code 2.1.312 / 2.1.313 在约 2:27am–1:35pm PT 可下;载荷尝试装持久 SSH 后门。次日 Microsoft Security 拆链,The Verge 转述 Cursor 口径称约 5000 人可能装过。
真正要钉的不是「又一个假冒扩展」,而是:信任根在分发信道,不在 Anthropic 是否被攻破。官方扩展名、Claude Code 品牌、Cursor 市场签发——用户眼睛里叠成「可以点安装」;攻击者只需要伪造其中一层。
TL;DR:恶意包在 Cursor 市场存活约 11 小时;收集主机/用户信息,写入标记为
svc-telemetry的 SSH 公钥,尝试开本地 SSH、建反向隧道,并经 LaunchAgent / 计划任务 / Startup 脚本做持久化。Cursor 称多数 macOS/Windows 主机因权限与载荷错误未能真正让攻击者登录;卸载扩展不等于清持久化。Anthropic 向 Microsoft 确认自身未失陷;VS Marketplace 与 npm@anthropic-ai/claude-code未受影响。对读本站 W44 短记里的 LiteLLM PyPI 投毒:代理栈供应链从 pip 扩到 IDE 扩展市场。~5000 只引 The Verge / Cursor 二手口径。IOC 不进正文清单化。
一、十一小时窗口里发生了什么
Cursor 公告把时间钉死:10-29 约 2:27am–1:35pm PT,市场短暂提供恶意版 Anthropic.claude-code(Windows 与 macOS)。公司写明这些版本并非 Anthropic 开发;并强调不影响 cursor.com/marketplace 上其他扩展及公司其他产品线。处置顺序也写得很硬:下架并阻断分发 → 出于谨慎整站关停市场 → 审计后确认无其他扩展被篡改 → 轮换密钥、重建市场再上线 → 与云厂商协同关掉攻击者服务器。
载荷行为(Cursor 与 Microsoft Security 10-30 分析 一致):模块加载时注入的 JavaScript 先做主机侦察(主机名、用户名、OS、架构、家目录、工作目录、Git email、公网 IP 等),再尝试把攻击者公钥写入 authorized_keys(注释 svc-telemetry),启用本地 SSH,建立反向 SSH 转发,并写平台相关持久化;延迟回调尝试回传主机详情与部分环境变量名(含 KEY/TOKEN/SECRET 等关键词匹配,最多约四十个——Microsoft 强调送的是名字不是值)。
flowchart TB
A["Cursor 市场签发<br/>伪 Anthropic.claude-code"] --> B["扩展加载<br/>注入 loader"]
B --> C["主机侦察"]
B --> D["写入 svc-telemetry 钥"]
B --> E["反向 SSH / 持久化"]
C --> F["延迟 beacon"]
D --> G["卸载扩展仍可能残留"]
E --> G
F --> G
Cursor 自己补了关键限定:开启本地 SSH 服务通常要管理员权限,恶意扩展在多数主机上没有;再叠加载荷错误,多数情况下攻击者无法经隧道登录。但公钥写入、持久化脚本与主机信息外传仍可能发生——所以公告要求无论隧道是否成功,都按受影响主机走排查与 remediation 脚本。Microsoft 用一句话收束:成功远程访问取决于权限、SSH 配置与攻击者服务器状态;即便隧道失败,钥与持久化工件仍可能已落盘。
二、信任根:品牌像 Anthropic,签发在 Cursor
Microsoft 明确写:恶意包从未出现在 Microsoft Visual Studio Marketplace,也未出现在 npm @anthropic-ai/claude-code;Anthropic 向其确认自身系统未妥协、未开发该恶意包;截至撰文时证据指向事件限于 Cursor 市场。这把故事从「实验室被攻破」扳回「谁签发安装包」。
编码代理用户习惯了两层信任捷径:一是品牌(Claude Code / Anthropic.*),二是编辑器内置市场「一点就装」。当第二层被污染,第一层的视觉一致性反而加速点击。Cursor 事后建议的加固——限制已批准发布者、对新发版本设安装冷却——正是承认:模型厂安全不等于分发面安全。
这和 W44 短记里的 LiteLLM PyPI 投毒是同一结构的不同层:那边是编排依赖经包管理器;这边是 IDE 扩展经编辑器市场。代理栈越深,供应链触点越多——pip、npm、扩展市场、MCP 目录,每一层都能把「看起来合法」写成「进程内执行」。本站 PHP2Shell 写的是模型能力压低利用摩擦;本稿写的是交付路径把执行权直接交给伪装成助手的扩展。
The Verge 10-30 稿引 Cursor:约 5000 人可能安装了恶意版;时间窗口按美东写成 5:27AM–4:35PM ET(对应公告的 PT 窗)。数字以 Verge / Cursor 转述为准,本站不另推算感染率,也不把「可能安装」读成「已确认被控」。
三、卸载不够:持久化写在扩展目录外
公告与 Microsoft 文都反复强调同一操作纪律:卸载或更新扩展不会清掉写在扩展目录外的工件。macOS 侧可见用户 LaunchAgent(如伪装系统监视名的 plist)与 ~/.config 下脚本/身份;Windows 侧可见计划任务与 Startup 回退;另有临时隧道身份文件。Cursor 提供平台 remediation 脚本,并要求从可信机器轮换受影响主机上可及的凭据与会话。
对安全团队,狩猎面因此不是「扩展是否还在」,而是:安装/自动更新遥测是否落在窗口内、是否出现 svc-telemetry 钥指纹、是否有异常 SSH 反向转发与同名持久化。Microsoft 文末还给了 Defender 检测与 advanced hunting 方向——本稿不复述 IOC 清单;需要的人去读两篇原文与 Cursor 附件脚本。
flowchart LR
subgraph trust ["用户以为的信任"]
T1["Anthropic 品牌"]
T2["Claude Code 名字"]
end
subgraph actual ["实际信任根"]
A1["Cursor 市场签发"]
A2["本机扩展运行时"]
end
trust -.->|"视觉一致"| Click["一点安装"]
actual --> Click
Click --> Risk["进程内执行 + 持久化外置"]
四、证据边界
- 时间窗、版本号、处置步骤、隧道多失败、卸载不足:以 Cursor 安全公告(含 10-30 IOC 更新)为准。
- 攻击链拆解、VS/npm 未受影响、Anthropic 未失陷确认:以 Microsoft Security 2026-10-30 为准。
- 约 5000 可能安装:以 The Verge 2026-10-30 转述 Cursor 为准。
- 不清单化利用步骤与完整 IOC;不推断归因行为体。
代理把本机变成工作区之后,扩展市场的签发权就等于远程代码执行的预授权。Cursor 这一刀提醒的是:下一场「Claude 失陷」传闻出现时,先问包是从哪一层市场下来的——再问模型厂本身。