这个攻击来得太狠了,直接把开发者当跳板,祸害整个Python生态。
StepSecurity最新披露,GlassWorm这个老流氓又进化了,这次叫ForceMemo。攻击者先通过恶意VS Code和Cursor插件把GlassWorm植入开发者电脑,插件里藏着专门偷凭证的模块。GitHub Token一旦到手,攻击者立刻用它对受害者账号下所有仓库动手。手法极其阴险:把最新合法commit rebase到默认分支,恶意代码偷偷追加到setup.py、main.py、app.py这些关键文件末尾,然后直接force push。原commit消息、作者、日期全部保留,GitHub界面上看不出任何pull request痕迹。干净、隐蔽、没法追踪。
最早的注入发生在2026年3月8日。被改动的仓库涉及Django应用、机器学习研究代码、Streamlit仪表盘,还有不少PyPI包。任何人只要pip install这些被污染的包,或者clone下来直接跑代码,恶意payload立刻触发。Base64编码的恶意代码藏在文件尾部,先检查系统语言是不是俄语,是的话直接跳过执行。其他情况就去Solana链上一个固定钱包BjVeAjPrSKFiingBn4vZvghsGj9KCE8AJVtbc9S8o8SC的memo字段里读C2地址。这个钱包最早交易记录追溯到2025年11月27日,比GitHub仓库被动手早了三个多月。钱包总共才50笔交易,攻击者却高频更新payload链接,有时候一天改好几次。
下载下来的后续载荷包括加密JavaScript,主要干两件事:偷加密货币和窃取数据。整个攻击链条显示,GlassWorm团伙早就把Solana基础设施搭好了,现在只是换了投毒方式,从单纯污染VS Code扩展升级到直接接管GitHub账号,再通过force push把恶意代码塞进数百个Python项目。Socket安全团队同时发现GlassWorm又搞了个新变种,利用extensionPack和extensionDependencies实现传递式分发,提高了存活率和绕过检测能力。Aikido Security则抓到另一波,用不可见Unicode字符藏代码,污染了151个以上GitHub仓库,C2指令依然从同一个Solana钱包拉取。
攻击者显然在多线并进。不同投毒手法,不同混淆手段,但底层基础设施高度一致,指向同一个幕后操盘手。ForceMemo这个分支尤其毒辣,因为它不走常规commit流程,而是直接改写历史。历史上供应链攻击里,用这种force push+保留原commit元数据的组合,几乎没见过先例。开发者辛辛苦苦维护的项目,一夜之间变成病毒分发器,自己还蒙在鼓里。
现在大环境也不太平。BTC现报$73,919(24h +3.30%),SOL现报$94.95(24h +7.80%),加密市场情绪回暖,资金流入明显。恰恰这种时候,针对开发者和开源仓库的攻击最容易得手。谁会想到自己pip install的那个小工具,背后连着Solana链上的偷币脚本?
防御端,StepSecurity给出的建议很现实:立即轮换所有GitHub Token,开启2FA且优先硬件密钥;仓库开启required reviews和protected branches,彻底禁用force push;定期审计依赖和本地插件来源,尤其是VS Code市场里的小众扩展。普通开发者最该做的,是把GitHub token当成命根子,别随便给第三方工具用,更别存明文。GlassWorm这伙人盯上的就是松懈的那一刻。
这场攻击还在持续扩散。被影响的仓库数量还在爬升,PyPI和开源社区的信任链又一次被重击。开发者们醒醒吧,token泄露不是小事,是能让你的代码仓库瞬间变毒窝的核弹。