恶意Claude Code借Anthropic官方ID混进Cursor市场,往电脑塞SSH密钥
2026年10月29日,一个恶意版本的Claude Code扩展通过Cursor Marketplace分发出去,版本号2.1.313,挂的是Anthropic官方的名字。
麻烦之处在于它用的是Anthropic的合法扩展ID——anthropic.claude-code,并非另做一个名字可疑的假扩展。在用户这边,看到的就是一次普通更新。Cursor随后把整个市场紧急关停,才把这个被入侵的包摘下去。
怎么混进去的,目前还没有答案。攻击者用什么办法拿到合法发布者通道上传这次更新,Cursor和Anthropic都没有给出技术细节。
技术层面,伪装做得挺细。主JavaScript包里插了一个66行的加载器,位置在合法代码之前,扩展一加载,它先跑。
扩展在VS Code启动和webview打开时激活,往用户的“~/.ssh/authorized_keys”里加一个攻击者控制的SSH密钥。密钥标签写作“svc-telemetry”,看着像个无害的遥测服务。
它还会在Windows、Linux、macOS上尝试让这台机器SSH可达,挂一条到134.209.82[.]225的反向隧道,并在三个平台各装一套持久化机制:计划任务、crontab、LaunchAgent。重启不算完,下次登录还会起来。
门槛在这里。在macOS和Windows上开本地SSH服务需要管理员权限,扩展没有,隧道登录可能失败。
失败也不等于没事。它照样会加上那个SSH密钥、装好持久化、把主机详细信息发出去。
发出去走的是未加密的HTTP,目标是134.209.82[.]225:8099/beacon。内容有公共IP(取自api.ipify[.]org)、主机名、用户名、操作系统、CPU架构、主目录、当前工作目录、全局Git邮箱,还有最多40个环境变量名——凡是名字里带KEY、TOKEN、SECRET、PASS、AWS、GCP的都算。
变量值没有放进初始beacon包。名字已经够用了:哪家云、哪套CI、哪类凭据,一目了然。如果反向隧道真接上了SSH,攻击者就能直接翻账户、发命令、传文件。目前没有观察到其他后续载荷,单是这条隧道就已经足够麻烦。
范围已经划出来了。最多5000名用户,窗口从10月29日凌晨2:27到下午1:35 PT。包撤得很快,但设了自动更新的Claude Code实例可能已经装上了。
只有一个渠道中招,没有证据显示恶意版本进了Open VSX或微软的VS Code Marketplace。它也不是Anthropic开发的,从cursor[.]com/marketplace下载的其他扩展、Grok Bot、Grok、SpaceXSI的其他产品都不受影响。到10月30日,恶意版本已下架,Anthropic把2.1.314发到了Open VSX和微软市场,Cursor表示会直接联系受影响用户。
窗口内装过的人,现在的处置是隔离主机、删掉未授权的SSH密钥和持久化机制、轮换凭据和会话。变量名已经把云厂商和CI系统的底摸出来了,值拿不到,也知道该往哪个方向试。
这起披露离OVHcloud CLI被劫持才过去一周多。那次攻击者用一个2026年3月就被劫持的合法OVH贡献者GitHub账户,把五个已发布版本的二进制文件换成了窃取秘密的恶意软件。两次间隔不到两周,方法一样:盯开发工具链,借合法身份,在最信任的更新环节动手。
早前有报道说被入侵的是Open VSX Registry上的扩展,后来追溯到了Cursor VS Code Marketplace。出问题的是Cursor自己的分发渠道。
Anthropic把修复版发到了另外两个市场,Cursor也恢复了运营。攻击者怎么拿到那个发布者的位置,至今没有答案。
关键事实
- 恶意版本2.1.313伪装成Anthropic官方Claude Code扩展,通过Cursor Marketplace分发。
- 恶意更新以合法发布者身份分发,导致Cursor暂时关闭市场以移除恶意包。
- 攻击者引入未经授权更新的确切方法尚不清楚。
- Cursor确认事件影响最多5000名用户。
- 恶意版本并非由Anthropic开发,且不影响其他扩展或Grok Bot等产品。
- 恶意包使用Anthropic的合法扩展ID(anthropic.claude-code),而非单独的假扩展。
- 恶意JavaScript包包含一个66行的加载器,插入在合法扩展代码之前。
- 恶意更新仅通过Cursor市场分发,未在Open VSX或微软官方VS Code市场出现。