技术

GlassWorm藏身VS Code扩展一年,四条命脉同时被切断

Susan Hill

一年多来,为你手机里的应用写代码的部分开发者,在毫不知情之中替别人干着活。一款名为GlassWorm的恶意程序,藏在全球使用最广的代码编辑器Visual Studio Code的扩展里,也藏在这些开发者每天拉进项目的开源软件包里。它收割他们的密码,劫持他们的账户,再用这些去把自己种进更多软件。CrowdStrike、Google和Shadowserver基金会如今剪断了它的提线。

这件事连从没打开过代码编辑器的人也躲不开,因为软件供应链恰恰就是一条链。手机上的聊天应用、银行应用、主机上的游戏,全都架在成千上万块由别人编写和维护的小小开源积木之上。给其中一块下毒,毒就能顺流而下,一直流进数百万人使用的成品里。GlassWorm生来就是为了不被看见地搭上这股水流。

让它与众不同的,是它藏身的手法。运营者用不可见的Unicode字符来写恶意指令,这种代码在编辑器里显示为一片空白,于是检查文件的开发者看不出任何不对劲。最早识别出这场行动的Koi Security研究人员,称它是第一只能通过代码编辑器扩展自我传播的蠕虫。每一台被感染的机器,都成了下一台的起点。

多数供应链攻击是打了就跑:有毒的软件包被发现、下架,几天内修补完毕。GlassWorm却是为长久而造。因为它会自己窃取传播所需的凭据,所以在任何一个扩展被下架很久之后,它依然能把自己重新种下,一次行动就这样在一年多里触及数百个项目、数万次下载。

感染的途径,是现代软件工作里再寻常不过的管道。运营者把暗藏机关的扩展上传到Open VSX,这个市场为VS Code及其表亲Cursor、Windsurf、Positron和VSCodium供货,而那些扩展被伪装成计时器、代码格式化器之类的无害工具。他们通过会自动运行的安装脚本,把动过手脚的代码塞进npm和Python包索引里的软件包,又用从早先受害者那里偷来的凭据,强行把恶意改动推进GitHub上三百多个仓库的主分支。一旦进入一台机器,GlassWorm就开始找钥匙:npm令牌、GitHub登录、让开发者得以上传扩展的发布令牌,还有加密货币钱包。它把被感染的电脑变成其他犯罪流量的中转服务器,有时还装上隐藏的远程控制软件,让运营者实时看到屏幕。

要拿下它,就得攻击运营者与受感染机器保持联系的方式,而恰恰在这一点上,GlassWorm生来就是为了活下去。它没有依赖一台可以拔掉插头的单一指令服务器,而是同时使用四条通道。一条把指令编码进Solana区块链的交易里,那是一本被设计成永久且无人能动的公共账本。另一条把配置藏在文件共享网络BitTorrent中。第三条把编码后的网址塞进Google Calendar日程的标题里。第四条只是一台普通的租用服务器。CrowdStrike的Counter Adversary Operations团队联手Google与Shadowserver,用一次协同打击把整套通道一并切断。

剪断提线,不等于清理伤口。切断通道能让运营者发不出新指令、推不了新载荷,却丝毫无法把GlassWorm从它已经控制的机器上清除,它已经偷走的每一个密码,依旧是偷走了。这也不是这场行动第一次被打断。在Koi Security揭露之后,GlassWorm卷土重来,一次带着两打新的恶意扩展,几个月后又带着数十个。研究人员曾形容为无法摧毁的那条区块链通道,如今已被摧毁,但其幕后之人一再表明,他们会重建。

调查人员相信,运营者很可能身在俄罗斯。这个程序在启动时会检查电脑的语言和时区设置,一旦发现自己落在俄罗斯或前苏联地区某个邻国的系统上,便会悄然退出,这是那些从该地区行动、避开本地受害者的犯罪团伙的熟悉印记。CrowdStrike把这种转变说得很直白:攻击者不再只盯着产品,而是盯上了打造产品的开发者。Shadowserver基金会已开始通知受影响的机构,让它们清理系统、更换一切可能外泄的凭据;而对链条更下游的所有人来说,真正的工作从现在才开始,各团队要逐一核查自2025年初以来装过哪些扩展和软件包。基础设施已经熄灭。清理才刚刚起步。

讨论

有 0 条评论。