危险的隐形蠕虫在Visual Studio Code扩展中被发现
一家专注于终端安全的公司Koi发现了一种自传播的恶意软件,并将其命名为GlassWorm。该恶意软件不仅窃取登录凭证,还使用远程访问木马将目标计算机作为代理节点使用。
在Open-VSX市场中,受感染的软件包仍然存在。与9月份在npm上发现的Shai Hulud恶意软件类似,GlassWorm能够自我复制,并利用Open VSX注册表、GitHub和npm等平台进行传播。
通过更新传播的恶意软件
Koi首次在Open VSX扩展CodeJoy中发现了该恶意软件。乍看之下,CodeJoy像是一个带有一些有用工具的常规扩展。但在1.8.3版本中,该扩展开始表现出可疑行为,如进行与正常功能无关的网络访问。
如果在Visual Studio Code中启用了extensions.autoUpdate,所有扩展(包括潜在的恶意软件)都会自动更新。看似有用的软件通过更新获得恶意代码的情况并不罕见。
隐形恶意代码
GlassWorm的恶意功能隐藏得非常好。该恶意软件不仅使用了常见的混淆技术或多重间接加载,还通过不可见的Unicode字符包含隐形代码。这显然是通过Unicode变体选择器块实现的。
根据Koi的博客文章,这些代码不仅对人类审查者不可见,对静态代码分析工具也是隐形的,但JavaScript解释器会执行这些隐藏代码。这种做法是新颖的,也是Koi将该恶意软件命名为GlassWorm(玻璃蠕虫)的原因。
非常规的C2服务器
GlassWorm在命令与控制服务器(C2服务器)方面也采用了新方法:扩展使用Solana区块链作为基础设施,这是一个公共区块链。通过这种方式,它们获取Base64格式的链接,指向包含实际恶意软件的更多有效负载。
对于攻击者来说,区块链具有诸多优势:它是分布式的,提供不可变、匿名的交易。此外,C2基础设施无法被关闭:如果有人关闭了区块链上存储的C2服务器,攻击者可以发布包含新地址的交易,恶意软件随后将使用这些新地址。
凭证窃取与蠕虫行为
GlassWorm通过该基础设施下载的有效负载可能包含AES-256-CBC加密的代码。相应的密钥直接出现在HTTP响应头中,从而实现动态分发。
最终,恶意代码会搜索各种开发者平台的凭证,并利用它们进行自我传播。
GlassWorm使用npm认证令牌在JavaScript包管理器上发布包含恶意代码的软件包。GitHub令牌和Git凭证被用来入侵合法的代码仓库。该恶意软件还使用Open VSX的登录凭证发布更多包含恶意代码的Visual Studio Code扩展。
最后,该软件会搜索加密货币的访问凭证。作为奖励,它还包含一个指向Google日历的链接,这是一个精巧的C2基础设施备份机制。
僵尸作为奖励
在日历链接中,还有一个Base64格式的URL,其目录名称/get_zombi_payload/甚至揭示了其功能:下载的、经过混淆和加密的代码显示这是一个远程访问木马。受感染的计算机变成了SOCKS代理服务器,从而开放了对公司内部网络流量的访问。
控制通过WebRTC的点对点连接进行。而且,命令再次不是存储在单个C2服务器上,而是通过BitTorrent分发。
活跃的玻璃蠕虫
Koi于2025年10月17日发现了该恶意代码,最初在Open VSX注册表中发现了七个受感染的扩展。不久之后,在该平台和VS Code市场中出现了更多受影响的扩展。该公司统计共有35,800次安装。
Koi的博客文章在附录中列出了发现的软件包名称、已知的有效负载URL以及Solana钱包和交易信息。
如果安装了任何受影响的软件包,必须假设系统已感染该恶意软件。同样,访问已知的C2服务器地址和受影响的Solana钱包也意味着系统可能已受感染。