企业文化

Ultralytics AI库的供应链被入侵,导致出现木马版本

2025-04-08

GitHub Actions失控攻击:恶意代码注入Python库

关键要点

攻击者利用GitHub Actions中的脚本注入漏洞,在自动构建过程中注入恶意代码,导致流行的Python库Ultralytics YOLO的包被毒化。注入的恶意代码安装了加密货币挖矿恶意软件,但攻击者可能会投放任何类型的恶意软件。尽管Ultralytics开发者迅速响应,但初次发布的修复版本仍然包含恶意代码,最终在同一天发布了安全版本。此次事件显示了GitHub Actions安全管理的脆弱性,以及需要更加谨慎地处理开源项目的开发流程。

攻击背景

攻击者通过入侵流行的机器学习模型开发库Ultralytics YOLO在官方Python包索引PyPI上发布的包,导致恶意代码的广泛传播。根据ReversingLabs的研究,这些攻击者利用一个已知的GitHub Actions漏洞,在自动构建过程中注入了恶意代码,从而绕过了常规的代码审查流程。因此,恶意代码只存在于推送至PyPI的包中,而不在GitHub的代码仓库中。

Ultralytics AI库的供应链被入侵,导致出现木马版本

被篡改的Ultralytics版本8341于12月4日发布,Ultralytics的开发者在12月5日被警告并尝试推出新版本8342以解决此问题,但由于他们最初并不理解漏洞来源,这个版本也包含了恶意代码。最终,12月5日发布了一个干净且安全的版本8343。

版本发布日期状态834112月4日恶意篡改包834212月5日包含恶意代码的修复834312月5日安全版

安全提示与风险

Ultralytics YOLO并非小项目,GitHub上拥有超过30000个星和6000多个分支,PyPI上的下载量接近6000万次。这次事件揭示了GitHub Actions在处理开源项目时的潜在风险,开发者应当谨慎选择允许哪些操作和触发条件。

小火箭shadowsock购买

安全研究员Adnan Khan曾多次调查和发现GitHub Actions相关的安全问题。在八月份,他首次报告了通过GitHub Actions的脚本注入漏洞,该漏洞可能导致工作流上下文中的任意代码执行,并随后得到了修复。然而,后续又重新引入了此漏洞。

在Khan的评论中,他提到攻击者所利用的注入点是在ultralytics/actions@c1365ce中引入的,而该版本发布仅为Ultralytics发布首个漏洞公告后十天。

这些攻击者似乎还使用了缓存污染技术,通过GitHub Actions持久化他们的修改,Khan早在五月份就对此作了相关记录。

根据ReversingLabs对恶意代码的分析,攻击者修改了两个文件:downloadspy 和 modelpy。注入到modelpy中的代码会检查包部署的机器类型,以下载针对该平台和CPU架构的恶意载荷。执行载荷下载的恶意代码储存在downloadspy。

“根据当前信息,RL研究团队认为所服务的恶意载荷只是一个XMRig挖矿程序,该恶意功能旨在进行加密货币挖矿,”ReversingLabs的研究人员表示。“但是可以想象,如果威胁行为者选择植入更具攻击性的恶意软件,例如后门或远程访问木马RATs,