17611538698
webmaster@21cto.com

研究人员称 PyPi 存储库易遭受已删除包劫持

安全 0 162 2024-09-06 11:26:27

图片

导读:JFrog 的安全研究人员发布报告称,PyPi 软件包存储库容易受到以与已删除软件包同名上传的恶意软件的攻击,如果已删除的软件包受到 Jenkins 等持续集成工具的信任并下载,则会导致自动感染。

在近日发布的一篇论文中,JFrog 研究人员 Andrey Polkovnychenko 和 Brian Moussalli 解释说,当开发人员从 Python 开发人员使用的主要存储库 PyPi 中删除项目时,该项目使用的软件包名称将立即被其他 PyPi 用户获取。如果该软件包名称随后被攻击者重复使用,开发人员可能会下载恶意版本而没有意识到它不再安全。

图片

这是一种比域名抢注(上传与流行和受信任软件包名称相似的软件包)更强大的技术,因为没有迹象表明以前受信任的软件包现在归新所有者所有。研究人员亲自尝试了这一技巧,创建软件包,删除它,然后用一个同名但来自不同帐户、版本号更高的新软件包替换它,测试成功了这一点。

研究人员报告称:“当我们运行 pip 来显示任何过时的软件包时,它会高兴地将我们的冒名顶替包显示为原始包的‘只是新版本’(4.0.0)——名称相同但代码却大不相同。”

根据该论文,PyPi 每月删除约 300 个软件包。研究人员发现,即使在过滤下载量超过 10 万次或之前活跃时间超过六个月的软件包后,仍有超过 22,000 个软件包存在被劫持的可能。

该团队还保留了一小部分较受欢迎的易受攻击的软件包名称,使用空软件包来防止劫持。在三个月内,这些空软件包的下载量亦接近 20 万次,这表明“仍有过时的作业和脚本在寻找已删除的软件包,或者由于域名抢注而手动下载这些软件包的用户”,该论文这样指出道。

图片

研究人员还发现了至少一起此类攻击的案例,攻击使用的是名为 pingdomv3 的软件包。

Pingdom API 是 SolarWinds 现运营的一项监控服务,但 pingdomv3 是一个独立项目,上次更新是在 2020 年,即 SolarWinds 收购之前。2024 年 3 月 30 日,pindomv3的原始作者从 PyPi 中删除了该软件包。不久之后,该软件包名称被一位新开发人员收购,并于 4 月 12日 上传了一个恶意版本。该版本已报告给 PyPi 并被立即删除。

恶意 pingdomv3 的有效载荷细节尚不清楚,但其方法是下载脚本并使用 Python exec 命令运行它,前提是该包在 Jenkins 环境中运行。

尽管这项研究是在 5 月份进行的并报告给了 PyPi,但 JFrog 团队表示“我们尚未收到 PyPi 团队的回复”。因此,该建议提到但似乎不是特别有用:“PyPI 用户应保持警惕,并确保他们的 CI/CD 机器不会尝试安装已从 PyPi 中删除的软件包。”

PyPi 安全工程师 Mike Fieldler 上个月发布了最近为提高安全性所采取的技术措施。

这些措施包括对所有用户帐户强制进行双因素身份验证、安全审计、改进恶意软件报告流程(90% 的问题在 24 小时内得到解决)、针对正在调查的可疑包提供新的隔离选项,以及对 PyPi 代码(一个名为Warehouse的应用程序)的改进。

作者:万能的大雄

评论