遗留Python包中的漏洞代码可通过域名劫持攻击Python包索引

自动草稿

现代开发环境中,遗留代码中潜藏的漏洞往往带来难以察觉的安全风险。近期,Python生态中就暴露出一个典型案例:与构建工具 zc.buildout 配套使用的过时引导脚本,可能使用户面临域名劫持攻击


Part01

遗留代码暴露供应链攻击入口


这些引导脚本原本用于自动化安装软件包依赖,但其中硬编码了若干外部域名链接,而这些域名早已脱离原维护者的控制。 


问题的核心在于:脚本在执行过程中,会尝试从域名 python-distribute[.]org 下载已被弃用的 distribute 包。该域名自2014年起已被废弃,目前处于“parked”状态,可被公开注册购买。一旦攻击者成功注册该域名并托管恶意载荷,任何运行该引导脚本的开发者设备都将自动下载并执行攻击者代码。


自动草稿

▲ 图为2010年代初PyPI社区使用的打包工具


此类行为绕过了常规安全审查机制,为供应链攻击提供了直达路径。


Part02

影响范围与触发条件


ReversingLabs安全研究人员确认,该漏洞影响多个知名Python项目,包括slapos.core、pypiserver、tornado


尽管多数开发者已转向更现代的打包标准(如 pip + pyproject.toml),但这些遗留引导脚本仍广泛存在于代码仓库中,形成“沉睡风险”。


需特别指出的是:该漏洞不会在常规 pip install 命令中触发通常需满足以下任一条件才会激活:

  • 开发者手动执行bootstrap.py脚本;

  • 通过Makefile等构建流程间接触发。


一旦执行,脚本将无条件信任外部来源——其风险等级与此前 npm 生态中 fsevents 包遭篡改事件相当。


Part03

无验证的远程代码执行



漏洞的根源在于引导脚本处理依赖解析时的严重设计缺陷。以 bootstrap.py 为例,其逻辑会首先检测本地是否已安装 distribute 包;若未发现,则调用 Python 内置的 urllib 库,向 python-distribute[.]org 发起HTTP请求下载安装脚本。


自动草稿

▲ 图为 bootstrap.py 中下载并执行 distribute 安装逻辑的代码片段


关键风险点在于:脚本将HTTP响应体直接传入exec()函数执行,全程未进行完整性校验(如哈希比对)或数字签名验证——这意味着攻击者控制域名后,即可实现任意代码远程执行(RCE),且以当前用户权限运行。


研究人员针对slapos.core构建了PoC攻击脚本,通过构造特定命令行参数,强制引导流程进入含漏洞的下载分支。


自动草稿

▲ 图为针对 slapos.core 的PoC利用脚本


终端输出证实:脚本成功连接外部域名并执行代码。这表明,任何托管在该域名上的恶意代码均可在受害者机器上获得完整用户权限,构成高危供应链攻击链。


参考来源:

Vulnerable Codes in Legacy Python Packages Enables Attacks on Python Package Index Via Domain Compromise

https://cybersecuritynews.com/vulnerable-codes-in-legacy-python-packages/

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
相关推荐
  • 暂无相关文章
  • 评论 抢沙发

    请登录后发表评论

      暂无评论内容