遗留Python包中的代码漏洞,可通过劫持其依赖域名进而危及整个PyPI软件生态

阅读量4796

发布时间 : 2025-11-28 18:00:14

x
译文声明

本文是翻译文章,文章原作者 Tushar Subhra Dutta,文章来源:cybersecuritynews

原文地址:https://cybersecuritynews.com/vulnerable-codes-in-legacy-python-packages/

译文仅供参考,具体内容表达以及含义原文为准。

遗留代码中的 隐藏漏洞 常为现代开发环境带来无形风险。

Python 生态系统近期就暴露了此类问题:与 zc.buildout 工具 相关的过时引导脚本使用户面临 域名劫持攻击 风险。这些用于自动安装包依赖的脚本包含 硬编码的外部域名引用,而这些域名已不再受原维护者控制。

问题核心在于脚本的特定行为:它们会尝试从 python-distribute[.]org 获取已弃用的 distribute 包。该域名自 2014 年起被遗弃,目前处于停放状态且可被购买。若威胁行为者收购此域名,即可分发恶意 payload,任何运行受影响引导脚本的开发者都会 自动下载并执行恶意代码。这为供应链攻击提供了直接路径,可绕过标准安全检查。

受影响范围与触发条件

ReversingLabs 安全分析师发现,此漏洞影响多个知名包,包括 slapos.core 、pypiserver 和 tornado。尽管许多开发者已迁移至新版本打包标准,但这些遗留文件仍常存在于代码库中。

漏洞不会在标准 pip install 过程中触发,通常需通过手动执行或构建流程(如 Makefile)调用。一旦激活,脚本会 盲目信任外部源,造成类似于 npm 仓库中 fsevents 事件的重大供应链风险。

执行机制分析

该漏洞的技术核心在于引导脚本处理依赖解析的不安全方式:代码逻辑会检查 distribute 包是否存在,若未找到,则使用 Python 内置 urllib 库启动下载例程。如上图所示,bootstrap.py 会从已失效的 python-distribute[.]org 获取并执行 distribute 安装程序,且 直接将 URL 响应传递给 exec() 函数,未经任何完整性检查或签名验证即立即运行代码。

为验证攻击向量,研究人员针对 slapos.core 构建了概念验证(PoC)漏洞利用脚本。该 PoC 通过操纵命令行参数迫使脚本进入易受攻击的下载路径,终端输出结果证实脚本成功连接外部域名,表明托管于该域名的任何代码都将以 用户完全权限 执行。

本文翻译自cybersecuritynews 原文链接。如若转载请注明出处。
分享到:微信
+10赞
收藏
安全客
分享到:微信

发表评论

安全客

这个人太懒了,签名都懒得写一个

  • 文章
  • 750
  • 粉丝
  • 6

热门推荐

文章目录
Copyright © 北京奇虎科技有限公司 三六零数字安全科技集团有限公司 安全KER All Rights Reserved 京ICP备08010314号-66