Cursor 中的 Claude Code 扩展被植入后门(2.1.312 和 2.1.313):如何检查与清理
返回博客
文章claude codesegurançatroubleshootingagente de programaçãodev tools

Cursor 中的 Claude Code 扩展被植入后门(2.1.312 和 2.1.313):如何检查与清理

Mafra2026年10月31日阅读约 7 分钟

如果你在 2026 年 10 月 29 日于 Cursor 中安装或更新过 Claude Code 扩展,请先运行两条命令:一条在 authorized_keys 中查找 SSH 公钥 svc-telemetry,另一条查找恶意代码留下的持久化文件。只要发现任何一项,就运行 Cursor 官方的清理脚本,并在另一台机器上轮换你的凭据。仅卸载扩展是不够的。

下面是 macOS、Windows 和 Linux 的具体命令,来自 Cursor 的安全公告以及它发布的清理脚本。

Cursor 中的 Claude Code 扩展发生了什么?

Cursor 的扩展市场在大约 11 小时内分发了被篡改的 Anthropic.claude-code 扩展,版本为 2.1.312 和 2.1.313,覆盖 macOS 和 Windows。根据 Cursor 安全公告(2026 年 10 月 29 日发布,10 月 30 日更新),这些版本"并非由 Anthropic 开发"。

项目已知情况来源
被篡改的版本2.1.312 和 2.1.313(darwin-arm64 与 win32-x64)Cursor,10 月 30 日更新
时间窗口2026 年 10 月 29 日,太平洋时间 02:27 至 13:35(UTC 09:27 至 20:35)Cursor
可能收到的用户最多 5,000 人BleepingComputer 与 OX Security,引用 Cursor
受影响渠道仅 Cursor 扩展市场。Cursor 表示没有证据显示其他版本或官方分发渠道受影响Cursor
攻击者服务器已下线,与云服务商合作关停Cursor
2.1.312 之前的版本不在任何受影响名单中Cursor、OX、Phorion

如果你只在终端中使用 Claude Code,或者是在 VS Code 中通过微软市场安装的扩展,上述来源中没有任何迹象表明你受到影响。

流程图:确认扩展版本,查找 svc-telemetry 公钥,运行 Cursor 官方脚本;如发现异常,在另一台机器上轮换凭据
完整的 3 步流程,若机器已被入侵还需轮换凭据。

恶意代码在机器上做了什么?

它把机器信息发送给攻击者,并尝试通过 SSH 打开入口。根据 Cursor 的描述,共四个阶段:

  1. 收集:主机名、用户名、操作系统、架构、主目录、环境变量的名称、工作目录、Git 邮箱和公网 IP。
  2. 攻击者公钥:向 ~/.ssh/authorized_keys 追加一把注释为 svc-telemetry 的 ssh-ed25519 公钥。
  3. 反向隧道:尝试开启本地 SSH,并建立到攻击者服务器的 ssh -N -R 隧道。Cursor 表示,由于恶意代码本身的错误,除非 Cursor 以管理员权限运行,否则这一步会失败。
  4. 持久化:macOS 上是 LaunchAgent,Windows 上是计划任务(以启动文件夹脚本作为后备),另有脚本大约每 60 秒尝试重建隧道。

分析过代码的 Phorion 记录到,环境变量过滤规则是 /KEY|TOKEN|SECRET|PASS|AWS|GCP/i,并且只发送名称,不发送值。这有助于决定先轮换哪些凭据,见下文。

怎么知道我的机器是否受影响?

查找公钥和持久化文件。不要相信版本号:Cursor 官方脚本说明,被篡改的包"保留了真实的版本号",因此它通过 extension.js 的内容来检测,你也应如此。

macOS 与 Linux

# 1. 是否安装了被篡改的扩展?(在代码中查找标记)
grep -l svc-telemetry ~/.[!.]*/extensions/anthropic.claude-code-*/extension.js 2>/dev/null

# 2. 攻击者公钥:按注释和指纹查找
grep -c svc-telemetry ~/.ssh/authorized_keys
ssh-keygen -lf ~/.ssh/authorized_keys | grep 0Z6R+DF64Do2nwQic8a7kkfDLNNk4IiK+2U2Rci4htk

# 3. 持久化
ls -la ~/.config/.smt ~/.config/.smtk ~/Library/LaunchAgents/com.apple.sysmond.plist 2>/dev/null
ls -a "${TMPDIR:-/tmp}" /tmp | grep '^\.stk_'
crontab -l 2>/dev/null | grep '\.config/\.smt'

为什么除了注释还要查指纹:Phorion 指出,注释可以被修改,公钥本身不会变。SHA256:0Z6R+DF64Do2nwQic8a7kkfDLNNk4IiK+2U2Rci4htk 是 Cursor 和 OX Security 公布的被植入公钥指纹。

Linux 不在 Cursor 列出的受影响构建中,但代码中有针对它的例程(crontab 中指向 ~/.config/.smt 的 @reboot 条目),Cursor 也把这些路径列为入侵指标。最后一行就是检查这种情况。

Windows(PowerShell)

# 1. 是否安装了被篡改的扩展?
Get-ChildItem "$HOME\.*\extensions\anthropic.claude-code-*\extension.js" -Force -ErrorAction SilentlyContinue |
    Select-String svc-telemetry -SimpleMatch -List

# 2. 攻击者公钥(Cursor 发布的命令)
$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" }

# 3. 持久化
schtasks /query /tn SysMon
Test-Path "$HOME\.config\smt.cmd", "$HOME\.config\smtk", "$env:APPDATA\Microsoft\Windows\Start Menu\Programs\Startup\sysmon.cmd"

如果 schtasks 提示找不到该任务,且三个 Test-Path 都返回 False,说明持久化不存在。

发现公钥或文件后怎么清理?

运行 Cursor 官方脚本。它会卸载持久化、结束隧道进程、删除被篡改的扩展、移除落地文件,并从 authorized_keys 中删除公钥。如果有残留,它会以退出码 1 结束。

# macOS:以受影响的用户身份运行,不要用 sudo(脚本会拒绝 root)
curl -fsSLO https://cursor.com/static/security/claude-code-extension/remediate-macos.sh
less remediate-macos.sh
bash remediate-macos.sh
# Windows:关闭所有编辑器,以"以管理员身份运行"打开 PowerShell
Invoke-WebRequest https://cursor.com/static/security/claude-code-extension/remediate-windows.ps1 -OutFile remediate-windows.ps1
powershell -ExecutionPolicy Bypass -File .\remediate-windows.ps1

预期输出是 clean: no backdoor found(本来就没有)或 done: backdoor removed。如果出现 incomplete,请阅读这一行上方的警告,关闭编辑器后再运行一次。Windows 脚本会清理机器上的所有用户配置文件;macOS 脚本需要在每个受影响的用户下各运行一次。

不要用 sed '/svc-telemetry/d' 删除整行。Cursor 的两个脚本都解释了原因:攻击者公钥是"在没有前置换行的情况下"追加的,因此它可能和你的某把合法公钥位于同一行。删除整行会连你自己的访问权限一起删掉。脚本只会删除精确的公钥字符串。

在 macOS 上,如果脚本提示有程序在监听 localhost:22,而你在这台机器上并不使用入站 SSH,请关闭远程登录:sudo systemsetup -setremotelogin off。

Linux 没有官方脚本。请手动删除 crontab 条目和文件,并确认你其他的任务仍在(Phorion 指出恶意代码中的一个错误可能会清掉已有的 cron 任务):

crontab -l | grep -v '\.config/\.smt' | crontab -
rm -f ~/.config/.smt ~/.config/.smtk /tmp/.stk_*
crontab -l

从 Cursor 卸载扩展能解决问题吗?

不能。Cursor 写道,卸载"可能不够",因为持久化脚本会在编辑器之外独立运行。更新扩展同样不会删除公钥或 LaunchAgent。你需要执行上一节的清理。

应该先轮换哪些凭据?

受影响机器能访问到的所有凭据,并且要在另一台机器上操作。Cursor 的原话建议是"从可信系统轮换受影响主机可访问的凭据和会话",因为仅收集名称"并不能排除之后通过后门访问凭据的可能"。

为了排定优先级,看看恶意过滤规则在你的环境中会命中哪些名称:

env | cut -d= -f1 | grep -iE 'KEY|TOKEN|SECRET|PASS|AWS|GCP'
要轮换的内容原因
上面命令输出的所有项名称已发给攻击者,值可通过隧道获取
~/.ssh 中的 SSH 密钥隧道可访问磁盘
GitHub 令牌(gh、Git Credential Manager)和 npm同上,且 Git 邮箱已被发送
云凭据(AWS、GCP、Azure)它们保存在主目录的文件中,不只在环境变量里
关键账号的浏览器会话Cursor 提到的是"凭据和会话"

如果隧道确实建立过(发现了公钥且本地 SSH 已开启),Cursor 建议隔离该机器并评估是否重装系统。

常见问题

我只在终端里用 Claude Code,需要做什么吗?

根据目前的来源,不需要。事件发生在 Cursor 的扩展市场。运行一次查找公钥的 grep 只要一秒,就能确认。

我的扩展版本比 2.1.313 更新,安全吗?

新版扩展不含恶意代码,但只要 2.1.312 或 2.1.313 曾经运行过,公钥和持久化就会留下。请照样检查。

攻击者服务器已经下线,还需要清理吗?

需要。公钥仍然在你的 authorized_keys 中被授权,持久化脚本也仍在尝试建立隧道。今天服务器下线,不代表明天不会有另一台。

如果你在检查编辑器扩展期间想在终端里有一个备用的编程代理,Verboo Code 以 CLI 形式运行,令牌不限量。

喜欢这篇文章吗?
把知识分享给你的朋友。
// 继续阅读

相关文章