Claude Code VS Code扩展被植入后门:SSH持久化访问风险与排查建议
Phorion 发布安全公告称,在 Cursor Marketplace 上分发的官方 Claude Code for VS Code 扩展包中发现后门,受影响版本为 2.1.313。该扩展包会尝试在 macOS、Linux 和 Windows 上配置 SSH 后门并建立持久化访问。Cursor 已从市场移除相关版本,NPM 与 VS Code 注册表中的 2.1.313 版本也被下架。
需要先说明的是:以下事实部分来自 Phorion 的公告,编辑分析部分会单独标注。本文不提供可直接用于攻击的操作步骤,只讨论检测、排查与处置思路。
背景:扩展市场为何成为供应链攻击面
Cursor Marketplace 为 Cursor 编辑器提供扩展分发。扩展随 IDE 和当前用户权限运行,模块加载后即可访问本地文件、源代码和开发工具链。这意味着一个被篡改的扩展不需要用户主动交互,就可能在后台执行任意逻辑。
根据公告,被篡改的 extension.js 在压缩包前部注入了一个立即执行函数表达式(IIFE),引入 child_process、fs、os、path、http、crypto 等 Node.js 模块,并在扩展正常的 activate 回调之前执行。其余代码看起来与正常扩展无异,这增加了人工审查的难度。
编辑分析:开发工具扩展通常拥有较高权限,且更新频繁、审查成本高,是供应链攻击的高价值目标。对企业来说,问题不只是“是否安装了某个扩展”,而是“谁能向开发机推送扩展更新、扩展运行在什么权限边界内”。
核心变化:后门做了什么
公告将载荷分为几个阶段,以下为来源事实的概括:
- 准备 SSH 访问:确保 ~/.ssh 存在,向 authorized_keys 追加攻击者控制的 Ed25519 公钥,注释为 svc-telemetry,并设置目录 0700、文件 0600 权限。脚本通过检查注释字符串判断是否已追加,而非校验公钥指纹。
- 建立反向 SSH 隧道:使用内置的未加密 Ed25519 私钥(注释 svc-telemetry-tun)连接 134.209.82[.]225 的 22 端口,使用 -R *:0:localhost:22 进行远程端口转发,由攻击者服务器动态分配监听端口,再转发回受害机 localhost:22。隧道使用 -N 保持连接,不执行远程命令。
- 持久化:macOS 写入 ~/.config/.smt 和 ~/.config/.smtk,并创建伪装成 com.apple.sysmond.plist 的用户 LaunchAgent;Linux 使用 @reboot crontab 条目;Windows 尝试创建名为 SysMon 的 SYSTEM 计划任务,失败则回退到启动文件夹。
- 主机侦察:收集主机名、用户名、平台、架构、主目录、当前工作目录、全局 Git 邮箱、公网 IP,以及最多 40 个匹配 KEY|TOKEN|SECRET|PASS|AWS|GCP 的环境变量名(仅名称,不含值),通过明文 HTTP POST 发送到 /beacon。
公告还指出一个 macOS 上的实现缺陷:脚本以普通用户运行 systemsetup -getremotelogin 时,该命令会输出“需要管理员权限”并以状态 0 退出,而非返回 Off。由于脚本只在输出匹配 Off 时才尝试开启远程登录,启用步骤被跳过。如果目标 Mac 原本未开启 SSH,入站访问路径会被破坏,但公钥和持久化仍会被写入。公告同时提醒,这不构成可靠防御:如果用户已开启或之后开启远程登录,后门仍然可用。
编辑分析:这个缺陷降低了部分 macOS 主机的直接交互风险,但不能据此判断“没事”。持久化机制、隧道进程和侦察信标仍然存在,且攻击者可通过已植入的公钥在 SSH 开启后登录。对于 Linux 和 Windows,公告也提到若干实现问题(例如非交互式 sudo 和 Windows 下硬编码 /bin/sh 的辅助函数),但同样不应被视为防护措施。
影响:哪些环境和数据需要关注
来源事实显示,受影响的是 Claude Code for VS Code 扩展 2.1.313 版本,分发渠道包括 Cursor Marketplace,NPM 与 VS Code 注册表版本也被下架。公告建议组织立即排查环境中是否使用该版本,并在发现使用时启动事件响应。
从影响面看,公告列出的侦察数据包括 Git 邮箱和环境变量名称,后者可帮助攻击者判断机器上存在哪些云凭证或 API 令牌。虽然公告称信标未直接外传变量值,但一旦攻击者通过 SSH 隧道获得交互式访问,这些凭证仍可能被读取。
编辑分析:开发机往往同时持有源代码访问权、CI/CD 凭证和云平台密钥,单台主机失陷的影响可能超出该主机本身。建议把排查范围从“装了扩展的机器”扩展到这些机器可访问的代码仓库、构建系统和云资源。公告未说明受影响用户数量、攻击者身份或攻击持续时间,这些信息目前来源未说明。
行动建议:开发者与运维应如何处理
1. 清点版本与分发来源
检查开发机、构建机和 CI 环境中是否安装或缓存了 Claude Code for VS Code 2.1.313。除 Cursor Marketplace 外,也检查 NPM 与 VS Code 扩展目录中的残留。公告提到扩展目录路径形如 ~/./extensions/,建议结合资产管理系统确认。
2. 按阶段排查,而不是只卸载扩展
公告明确提醒:仅卸载扩展不能移除后门。排查应覆盖以下痕迹(仅用于检测,不构成攻击指导):
- ~/.ssh/authorized_keys 中是否存在注释为 svc-telemetry 的公钥,并以公钥指纹 SHA256:0Z6R+DF64Do2nwQic8a7kkfDLNNk4IiK+2U2Rci4htk 交叉核验;
- macOS 上是否存在
/Library/LaunchAgents/com.apple.sysmond.plist、/.config/.smt、~/.config/.smtk;Linux 上是否有 @reboot crontab 条目;Windows 上是否有 SysMon 计划任务或启动文件夹中的 sysmon.cmd; - 是否存在指向 134.209.82[.]225 的 SSH 或 autossh 进程,以及到该地址 22 端口和 8099 端口的连接;
- 临时目录中是否存在 .stk_ 前缀文件。
3. 关注文件写入和进程父子关系
公告指出,恶意代码通过 Node 的 fs.appendFileSync 直接追加 authorized_keys,仅监控 echo、tee 等 shell 命令的规则可能漏检。建议在端点遥测中关注 IDE 辅助进程(如 Code Helper、Cursor Helper)对 ~/.ssh/authorized_keys 的写入,以及非 Apple 进程创建 com.apple.* 标签的 LaunchAgent。由于隧道进程被分离并由 launchd 管理,后续 ssh 进程的父进程可能不再是 IDE,需要结合文件创建时间线关联。
4. 评估是否发生实际登录
公告提示,通过本地端口转发进入的会话在 SSH 日志中可能显示为来自 127.0.0.1 或 ::1,并使用 svc-telemetry 密钥认证。排查时应检查此类本地来源的登录记录,而不是只看外部 IP。
5. 处置与凭证轮换
确认受影响后,应终止隧道进程、移除持久化项和隐藏脚本、删除植入的公钥与临时密钥文件,并确认远程登录未被意外开启。若 SSH 曾被开启或存在入站登录迹象,应轮换该用户可访问的凭证和令牌,重点关注环境变量名匹配 KEY|TOKEN|SECRET|PASS|AWS|GCP 的凭证。
编辑分析:处置顺序上,建议先隔离主机并保留取证数据,再清理持久化,避免直接删除导致时间线丢失。对于无法确认是否执行过载荷的主机,可按“疑似失陷”处理,优先轮换高价值凭证。
6. 长期控制
建议限制开发机可安装扩展的来源,建立扩展版本白名单与变更审计;对 ~/.ssh 目录设置访问控制,只允许授权进程读写;将扩展宿主进程的异常文件写入纳入告警。公告提到 Phorion 自身产品可对相关行为提供检测和阻断,但这属于厂商描述,本文未做独立验证。
资料来源
本文由自动化系统筛选公开技术信息,并经 AI 辅助整理。
本文转载自 phorion.io,版权归原作者所有。
原文链接:https://phorion.io/blog/offical-claude-code-vsx-compromise
抓取时间:2026年10月31日
本文采用 original 索引策略。