Cursor Claude Code VS Code 扩展被植入后门
当官方扩展变成后门:Cursor 市场 Claude Code 供应链攻击全记录与修复指南
2026 年 10 月 29 日,一起针对开发者工具的供应链攻击在安全社区迅速传开。Cursor 扩展市场中分发的官方 Claude Code 扩展(版本 2.1.313)被植入恶意代码,会在 macOS、Linux 和 Windows 上尝试安装持久化 SSH 后门。攻击窗口持续约 11 小时,Cursor 官方估计最多 5,000 名用户受到影响。
这篇文章将梳理事件全貌、攻击技术细节,并提供完整的检测与修复步骤。如果你在 10 月 29 日使用过 Cursor 并开启了扩展自动更新,请优先阅读“检测与修复”部分。
事件概览
发生了什么
2026 年 10 月 29 日太平洋时间凌晨 2:27 至下午 1:35,Cursor VS Code 扩展市场上出现了一个被篡改的 anthropic.claude-code 2.1.313 版本。该版本并非 Anthropic 开发,而是攻击者在合法扩展代码中插入了恶意载荷。
Cursor 在发现后立即下架了该版本,并出于审慎考虑短暂全面关停了市场服务。官方声明称已审计确认没有其他扩展遭到篡改,轮换密钥后重建了市场。
影响范围
受影响版本:
anthropic.claude-code2.1.313分发渠道:Cursor 扩展市场(非 Open VSX 或微软 VS Code Marketplace)
时间窗口:2026 年 10 月 29 日 02:27–13:35 PT
估计受影响用户:最多 5,000 人
安全版本:2.1.314,已在 Open VSX 和微软 VS Code Marketplace 发布
攻击技术分析
载荷如何植入
根据 OpenSourceMalware 联合创始人 Jenn Gile 的分析,恶意代码以一段 66 行的 JavaScript 加载器形式,被插入到扩展主 JavaScript 包中合法代码的开头。这意味着恶意逻辑会在扩展被加载时自动执行,用户甚至不需要主动打开 Claude 对话面板。
后门行为链条
恶意载荷按以下顺序执行:
第一步:植入 SSH 公钥
向用户的 ~/.ssh/authorized_keys 文件追加攻击者控制的 Ed25519 公钥,注释字段设为 svc-telemetry,伪装成遥测相关组件。同时将 SSH 目录权限设为 0700,authorized_keys 权限设为 0600,使配置看起来与正常 SSH 设置无异。
第二步:尝试开启 SSH 服务并建立反向隧道
在 macOS 上尝试开启远程登录,在 Linux 上启动 SSH 服务,在 Windows 上通过 PowerShell 安装 OpenSSH Server。随后向 134.209.82[.]225 建立反向 SSH 隧道,目标是将受害者的本地 22 端口反向转发到攻击者服务器。
第三步:安装持久化机制
macOS:创建 LaunchAgent
~/Library/LaunchAgents/com.apple.sysmond.plist(命名刻意仿冒 Apple 系统组件)Linux:添加
@rebootcron 条目Windows:创建以 SYSTEM 权限运行的
SysMon计划任务,备选方案是在启动文件夹放置脚本
后台脚本大约每 60 秒重试一次隧道连接。
第四步:回传主机侦察数据
通过未加密的 HTTP POST 将数据发送至 134.209.82[.]225:8099/beacon,收集内容包括:
公网 IP(通过 api.ipify.org 获取)
主机名与本地用户名
操作系统版本与 CPU 架构
主目录路径与当前工作目录
Git 全局邮箱(通过
git config --global user.email读取)最多 40 个名称包含
KEY、TOKEN、SECRET、PASS、AWS、GCP关键词的环境变量名称
安全研究员 Paul McCarty 指出,环境变量的值并未直接包含在初始回连信标中,但变量名称本身足以暴露主机上配置了哪些云服务商、CI 系统和凭据类型。更关键的是,一旦攻击者通过 SSH 成功接入,就可以直接查看账户内的所有敏感信息。
一个“幸运的”逻辑漏洞
恶意代码在 macOS 上存在一个执行逻辑错误:它尝试以普通用户权限检查远程登录状态,而 systemsetup -getremotelogin 在权限不足时会返回错误并以退出状态 0 结束,而非输出“Off”。由于恶意脚本只在返回“Off”时才尝试开启 SSH,这一分支在大多数 macOS 主机上被跳过。
Cursor 官方也确认,开启本地 SSH 服务需要管理员权限,而在大多数 macOS 和 Windows 主机上,恶意扩展并不具备该权限。
但这不意味着安全。攻击者的公钥仍被写入、持久化机制仍被安装、主机信息仍被回传。Cursor 明确表示:“在这些主机上该步骤会失败,攻击者无法通过隧道登录。但扩展仍会添加攻击者的 SSH 公钥、安装持久化机制,并向攻击者发送主机详情。因此无论哪种情况,都请按照修复步骤处理。”
检测:你的机器是否中招
恶意扩展会在 authorized_keys 中留下标签为 svc-telemetry 的密钥。这是最直接的检测指标。
macOS
打开终端,运行:
grep -qs svc-telemetry ~/.ssh/authorized_keys && echo "svc-telemetry key found" || echo "No key found; machine not impacted"
Windows
在 PowerShell 中运行:
$files = "$HOME\.ssh\authorized_keys", "C:\ProgramData\ssh\administrators_authorized_keys" | Where-Object { Test-Path $_ } if ($files -and (Select-String svc-telemetry $files)) { "svc-telemetry key found" } else { "No key found; machine not impacted" }
如果输出 svc-telemetry key found,说明你的机器已受影响,请立即执行下方的修复步骤。
修复:仅卸载扩展远远不够
Cursor 官方警告:仅卸载扩展可能不够,因为恶意载荷会释放独立的持久化脚本,并在扩展卸载后继续运行。
官方修复脚本(推荐优先使用)
Cursor 安全公告页面提供了各平台的修复脚本,功能包括移除恶意扩展、持久化机制、运行中的隧道进程以及攻击者的 SSH 密钥。如果清理不彻底,脚本会以非零状态退出。
访问 cursor.com/cn/blog/claude-code-extension-security-notice,在“修复受影响的机器”部分下载对应平台的脚本:
macOS:
remediate-macos.sh,以受影响用户身份运行Windows:以管理员身份运行对应脚本
手动清理步骤(备选)
如果无法获取官方脚本,可以按平台手动清理。
macOS
# 卸载并删除 LaunchAgent launchctl bootout gui/$(id -u)/com.apple.sysmond 2>/dev/null rm -f ~/Library/LaunchAgents/com.apple.sysmond.plist # 终止隧道进程 pkill -f "tunnel@134.209.82.225"; pkill -f 'autossh -M 0'; pkill -f '\.config/\.smt' # 删除攻击者 SSH 公钥 sed -i.bak '/svc-telemetry/d' ~/.ssh/authorized_keys # 删除残留文件 rm -f ~/.config/.smt ~/.config/.smtk "$TMPDIR"/.stk_*
Linux
# 删除 @reboot cron 条目 crontab -l | grep -v '@reboot.*\.config/\.smt' | crontab - # 终止隧道进程 pkill -f "tunnel@134.209.82.225" # 删除 SSH 公钥 sed -i.bak '/svc-telemetry/d' ~/.ssh/authorized_keys # 删除残留文件 rm -f ~/.config/.smt ~/.config/.smtk /tmp/.stk_*
Windows
删除名为
SysMon的计划任务检查启动文件夹中的
sysmon.cmd并删除检查
%USERPROFILE%\.ssh\authorized_keys和C:\ProgramData\ssh\administrators_authorized_keys,移除包含svc-telemetry的行
升级到安全版本
确认 Claude Code 扩展已升级至 2.1.314 或更高版本。该版本已在 Open VSX 和微软 VS Code Marketplace 发布,不含恶意代码。
轮换凭据(关键步骤)
在另一台干净设备上,更换受影响主机可访问的所有密码、API Key、SSH 密钥和会话令牌。虽然恶意代码只回传了环境变量的名称而非值,但一旦攻击者通过其他途径获得访问权,已植入的后门即可被利用来读取完整凭据。
评估是否需要重建系统
如果检出 svc-telemetry 密钥,且无法确认清理彻底,安全机构建议直接重装系统。持久化机制可能不止已知的几处,彻底清除的把握有限。
当前状态与后续
攻击者服务器 134.209.82[.]225 已被 Cursor 联合云服务商下线,反向 shell 和回传通道已失效。但已写入的 SSH 公钥和持久化脚本不会因此自动消失,仍需手动清除。
Cursor 表示将直接联系受影响的用户,并已轮换相关密钥后重建市场。Anthropic 方面发布了安全版本 2.1.314,但截至目前未就此事单独发布公开声明。
对于开发者而言,这起事件提供了一个值得记住的教训:扩展市场的“官方发布者”标识并不等同于代码安全。一个被篡改的更新包,可以在用户毫无感知的情况下,将开发者的整个工作环境暴露给攻击者。
参考来源:Cursor 安全公告、OpenSourceMalware 分析、The Hacker News、heise online、Freebuf 等公开报道。
相关文档
评论与补充0
有问题或想补充的,写在下面 · 选中正文文字再点「报告错误」会自动引用还没有评论。有疑问、补充,或者发现错字,都可以写在下面。