遗留代码中的隐藏漏洞往往会给现代开发环境带来未知风险。近期Python生态系统中就暴露出这样一个问题:与zc.buildout工具相关的过时引导脚本使用户面临域名劫持攻击风险。
漏洞成因分析
这些用于自动化安装包依赖项的脚本中,硬编码了已脱离原维护者控制的外部域名引用。问题核心在于这些脚本会尝试从python-distribute[.]org获取已弃用的distribute包。该域名自2014年起被废弃,目前处于待售状态。若攻击者购得该域名,即可托管恶意载荷,任何运行该问题引导脚本的开发者都将自动下载并执行这些恶意代码。
2010年代初PyPI社区使用的打包工具(来源:Reversinglabs)
这种机制为供应链攻击开辟了直接通道,可绕过标准安全检查。
受影响范围与触发条件
Reversinglabs安全分析师发现该漏洞影响多个知名软件包,包括slapos.core、pypiserver和tornado。虽然许多开发者已转向新的打包标准,但这些遗留文件仍常驻代码库。该漏洞不会在标准pip安装过程中触发,通常需要手动执行或通过Makefile等构建流程调用。一旦激活,脚本将无条件信任外部来源,产生类似npm注册表中fsevents事件的重大供应链风险。
执行机制技术解析
漏洞的技术核心在于引导脚本处理依赖项解析的不安全方式。代码逻辑会专门检查distribution包的存在状态。
bootstrap.py文件中获取并执行distribute设置的代码(来源:Reversinglabs)
若未找到该包,脚本将使用Python内置的urllib库启动下载例程。如图所示,distribute设置通过bootstrap.py获取并执行;脚本会明确向现已失效的python-distribute[.]org请求内容。关键在于,该URL的响应会直接传递给exec()函数,立即执行代码而不进行任何完整性检查或签名验证。
针对slapos.core漏洞的PoC脚本(来源:Reversinglabs)
为验证此攻击向量,研究人员构建了针对slapos.core的概念验证漏洞利用程序。该PoC通过操纵命令行参数强制脚本进入易受攻击的下载路径。终端输出结果证实脚本成功连接外部域名,证明托管在该域的任何代码都将以用户完整权限执行。