黑海洋 黑海洋 WIKI

Cursor Claude Code VS Code 扩展被植入后门

资讯 · 约 10 分钟 · 黑海洋 · 4,591

当官方扩展变成后门: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-code 2.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:添加 @reboot cron 条目

  • 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

打开终端,运行:

bash
grep -qs svc-telemetry ~/.ssh/authorized_keys && echo "svc-telemetry key found" || echo "No key found; machine not impacted"

Windows

在 PowerShell 中运行:

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

有问题或想补充的,写在下面 · 选中正文文字再点「报告错误」会自动引用

还没有评论。有疑问、补充,或者发现错字,都可以写在下面。

就事论事,别发广告 · 正常评论