攻击者通过入侵流行的机器学习模型开发库UltralyticsYOLO在官方Python包索引PyPI上发布的包,导致恶意代码的广泛传播。根据ReversingLabs的研究,这些攻击者利用一个已知的GitHubActions漏洞,在自动构建过程中注入了恶意代码,从而绕过了常规的代码审查流程。因此,恶意代码只存在于推送至PyPI的包中,而不在GitHub的代码仓库中。
被篡改的Ultralytics版本(8.3.41)于12月4日发布,Ultralytics的开发者在12月5日被警告并尝试推出新版本(8.3.42)以解决此问题,但由于他们最初并不理解漏洞来源,这个版本也包含了恶意代码。最终,12月5日发布了一个干净且安全的版本(8.3.43)。
| 版本 | 发布日期 | 状态 |
|---|---|---|
| 8.3.41 | 12月4日 | 恶意篡改包 |
| 8.3.42 | 12月5日 | 包含恶意代码的修复 |
| 8.3.43 | 12月5日 | 安全版 |
UltralyticsYOLO并非小项目,GitHub上拥有超过30,000个星和6,000多个分支,PyPI上的下载量接近6,000万次。这次事件揭示了GitHubActions在处理开源项目时的潜在风险,开发者应当谨慎选择允许哪些操作和触发条件。
安全研究员Adnan Khan曾多次。在八月份,他首次,该漏洞可能导致工作流上下文中的任意代码执行,并随后得到了修复。然而,后续又重新引入了此漏洞。
在Khan的,他提到攻击者所利用的注入点是在ultralytics/actions@c1365ce中引入的,而该版本发布仅为Ultralytics发布首个漏洞公告后十天。
这些攻击者似乎还使用了,通过GitHubActions持久化他们的修改,Khan早在五月份就对此作了。
根据ReversingLabs对恶意代码的分析,攻击者修改了两个文件:downloads.py 和 model.py。注入到model.py中的代码会检查包部署的机器类型,以下载针对该平台和CPU架构的恶意载荷。执行载荷下载的恶意代码储存在downloads.py。
“根据当前信息,RL研究团队认为所服务的恶意载荷只是一个XMRig挖矿程序,该恶意功能旨在进行加密货币挖矿,”ReversingLabs的研究人员表示。“但是可以想象,如果威胁行为者选择植入更具攻击性的恶意软件,例如后门或远程访问木马(RATs),
Leave a Reply