软件供应链安全公司 JFrog 将攻击代号命名为 Revival Hijack,该公司表示,这种攻击方法可用于劫持 22,000 个现有的 PyPI 软件包,并导致“数十万”次恶意软件包下载。
这些易受攻击的软件包下载量超过 100,000 次,或已活跃超过六个月。
JFrog 安全研究人员 Andrey Polkovnychenko 和 Brian Moussalli 在一份报告中表示:“这种攻击技术涉及劫持 PyPI 软件包,通过操纵在原始所有者从 PyPI 索引中删除它们后重新注册的选项。”
这次攻击的本质是,PyPI 存储库中发布的几个 Python 包被删除,使得任何其他用户都可以重新注册它们。
JFrog 分享的统计数据显示,平均每月有大约 309 个软件包被删除。这种情况可能出于多种原因:缺乏维护(即废弃软件)、软件包以不同的名称重新发布,或者将相同的功能引入官方库或内置 API。
这也构成了一个比域名抢注更有效的有利可图的攻击面,攻击者可以利用自己的帐户发布同名且更高版本的恶意软件包,以感染开发者环境。
研究人员表示:“该技术并不依赖于受害者在安装软件包时犯的错误。”他们指出,从对手的角度来看,Revival Hijack 可以产生更好的效果。“许多用户认为将‘曾经安全’的软件包更新到最新版本是一种安全的操作。”
虽然 PyPI 确实有针对作者冒充和域名抢注的安全措施,但 JFrog 的分析发现,运行“ pip list --outdated ”命令会将假冒软件包列为原始软件包的新版本,其中前者对应于完全不同作者的不同软件包。
更令人担忧的是,运行“ pip install –upgrade ”命令会将实际软件包替换为虚假软件包,并且不会发出软件包作者已更改的警告,这可能会使不知情的开发人员面临巨大的软件供应链风险。
JFrog 表示,它已采取措施创建一个名为“ security_holding ” 的新 PyPI 用户帐户,用于安全地劫持易受攻击的软件包并将其替换为空的占位符,以防止恶意攻击者利用被删除的软件包。
此外,每个软件包都被分配了版本号 0.0.0.1 - 与依赖混淆攻击场景相反- 以避免在运行 pip 升级命令时被开发人员拉取。
令人不安的是,Revival Hijack 已经在野外遭到利用,一个名为 Jinnis 的未知攻击者于 2024 年 3 月 30 日引入了一个名为“ pingdomv3 ”的软件包的良性版本,同一天,原始所有者 (cheneyyan) 从 PyPI 中删除了该软件包。
据称,2024 年 4 月 12 日,新开发人员发布了一个更新,其中包含一个 Base64 编码的有效负载,该有效负载检查“ JENKINS_URL ”环境变量是否存在,如果存在,则执行从远程服务器检索的未知的下一阶段模块。
JFrog 表示:“这表明攻击者要么延迟了攻击的发起,要么将其设计得更具针对性,可能将其限制在特定的 IP 范围内。”
此次新攻击表明,攻击者正着眼于更大范围的供应链攻击,目标是已删除的 PyPI 软件包,以扩大攻击范围。建议组织和开发人员检查其 DevOps 管道,以确保他们没有安装已从存储库中删除的软件包。
JFrog 安全研究团队负责人 Moussalli 表示:“处理已删除软件包时使用易受攻击的行为允许攻击者劫持现有软件包,从而可以在不改变用户工作流程的情况下将其安装到目标系统中。”
“PyPI 软件包的攻击面不断扩大。尽管采取了主动干预措施,但用户仍应始终保持警惕并采取必要的预防措施,以保护自己和 PyPI 社区免受这种劫持技术的侵害。”
报告全文:https://jfrog.com/blog/revival-hijack-pypi-hijack-technique-exploited-22k-packages-at-risk/
参考链接:
https://thehackernews.com/2024/09/hackers-hijack-22000-removed-pypi.html
原文始发于微信公众号(军哥网络安全读报):研究人员发现一种针对 Python 包索引 (PyPI) 注册表的新型供应链攻击技术已被广泛利用
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论