漏洞概况
PyInstaller项目近日发布补丁,修复了一个影响6.0.0之前版本打包应用程序的本地权限提升漏洞(CVE-2025-59042,CVSS评分7.0)。该漏洞可能导致攻击者在PyInstaller冻结应用的引导过程中执行任意代码。
技术原理
PyInstaller通过打包解释器和依赖项将Python应用程序转换为独立可执行文件。安全公告指出:"由于PyInstaller冻结应用在引导过程中会将特殊条目附加到sys.path,且引导脚本在sys.path仍包含该条目时尝试加载用于字节码解密的可选模块,导致使用PyInstaller 6.0.0之前版本构建的应用可能被低权限攻击者诱骗执行任意Python代码。"
该漏洞的成因在于:当满足特定条件时,引导脚本可能错误导入攻击者放置的恶意模块。具体攻击方式需要攻击者能够在可执行文件旁创建精心构造的目录或zip压缩包,这些文件需模仿PyInstaller引导加载器用于传输PYZ存档位置的格式。
攻击条件
成功利用该漏洞需要同时满足以下五个前提条件:
- 使用PyInstaller 6.0.0之前版本构建的应用程序(影响onedir和onefile两种模式)
- 未启用可选的字节码加密功能
- 攻击者能在可执行文件所在目录创建文件/目录
- 文件系统允许在文件/目录名中使用"?"字符(非Windows系统)
- 攻击者能够确定嵌入式PYZ存档的偏移量
修复方案
PyInstaller团队分两个阶段解决了该问题:
- 6.0.0版本:移除对字节码加密的支持,由于引导脚本不再尝试加载字节码解密模块,从根本上消除了该攻击向量
- 6.10.0版本:通过消除使用sys.path传输PYZ存档位置的做法,进一步强化了引导过程
临时缓解措施
对于无法立即升级的环境,建议采取以下防护措施:
- 对包含特权可执行文件(如setuid二进制文件)的目录设置严格的权限控制
- 确保攻击者无法在敏感可执行文件旁创建任意文件
参考来源:
PyInstaller Flaw : Are Your Python Apps Vulnerable to Hijacking?
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf
客服小蜜蜂(微信:freebee1024)