GlassWorm恶意软件活动正被用于推动一场持续攻击,该攻击利用窃取的GitHub令牌向数百个Python仓库注入恶意软件。
StepSecurity表示:"该攻击针对Python项目——包括Django应用程序、机器学习研究代码、Streamlit仪表板和PyPI包——通过在setup.py、main.py和app.py等文件中附加混淆代码。任何从受感染仓库运行pip install或克隆并执行代码的人都会触发恶意软件。"
据这家软件供应链安全公司称,最早的注入可追溯到2026年3月8日。攻击者在获得开发者账户访问权限后,将目标仓库默认分支的最新合法提交与恶意代码重新整合,然后强制推送更改,同时保持原始提交消息、作者和作者日期不变。
GlassWorm活动的这一新分支被代号为ForceMemo。该攻击通过以下四个步骤展开:
通过恶意VS Code和Cursor扩展用GlassWorm恶意软件感染开发者系统。该恶意软件包含一个专门用于窃取机密信息(如GitHub令牌)的组件。
使用窃取的凭据通过将混淆恶意软件重新整合到名为"setup.py"、"main.py"或"app.py"的Python文件中,向受感染GitHub账户管理的每个仓库强制推送恶意更改。
Base64编码的有效载荷附加在Python文件末尾,具有类似GlassWorm的检查功能,以确定系统是否将其区域设置为俄语。如果是,则跳过执行。在所有其他情况下,恶意软件查询与先前链接到GlassWorm的Solana钱包关联的交易备忘录字段,以提取有效载荷URL。
从服务器下载额外的有效载荷,包括旨在窃取加密货币和数据的加密JavaScript。
StepSecurity表示:"C2地址的最早交易日期为2025年11月27日——比2026年3月8日首次GitHub仓库注入早三个多月。该地址总共有50笔交易,攻击者定期更新有效载荷URL,有时一天多次。"
这一披露正值Socket标记了GlassWorm的新迭代,该迭代在技术上保留了相同的核心战术,同时通过利用extensionPack和extensionDependencies来通过传递分发模型传递恶意有效载荷,提高了生存能力和规避能力。
与此同时,Aikido Security还将GlassWorm作者归因于一场大规模活动,该活动使用不可见的Unicode字符隐藏恶意代码,感染了151个以上的GitHub仓库。有趣的是,解码的有效载荷被配置为从同一个Solana钱包获取C2指令,表明威胁行为者一直在多波次地针对GitHub仓库。
使用不同的传递方法和代码混淆方法,但使用相同的Solana基础设施,表明ForceMemo是由GlassWorm威胁行为者维护和操作的新传递载体,该行为者现在已从感染VS Code扩展扩展到更广泛的GitHub账户接管。
StepSecurity指出:"攻击者通过强制推送到受感染仓库的默认分支来注入恶意软件。这种技术重写了git历史记录,保留了原始提交消息和作者,并且在GitHub的UI中不留下拉取请求或提交记录。没有其他记录在案的供应链活动使用这种注入方法。"
Q&A
Q1:GlassWorm攻击是什么?它如何工作?
A:GlassWorm是一种恶意软件攻击活动,通过恶意VS Code和Cursor扩展感染开发者系统,窃取GitHub令牌,然后向Python仓库注入恶意代码。攻击者使用强制推送技术将混淆的恶意代码附加到setup.py、main.py等关键文件中。
Q2:ForceMemo攻击有什么特殊之处?
A:ForceMemo是GlassWorm的新分支,其特殊之处在于使用强制推送技术重写git历史记录,保留原始提交信息和作者,在GitHub界面中不留下任何拉取请求或提交记录,使攻击更难被发现。
Q3:如何防护GlassWorm攻击?
A:开发者应谨慎安装VS Code和Cursor扩展,定期检查账户安全,监控仓库的异常提交活动。同时,在运行pip install或克隆代码前应验证代码完整性,特别注意setup.py等关键文件的变化。