PyInstaller项目已发布针对本地权限提升漏洞的修复程序,该漏洞影响使用6.0.0版本之前打包的应用。该漏洞编号为CVE-2025-59042,CVSS评分为7.0,攻击者可利用此漏洞在PyInstaller打包应用的引导过程中执行任意代码。
PyInstaller通过打包解释器和依赖项,将Python应用转换为独立可执行文件。然而,安全公告指出:“由于PyInstaller打包应用在引导过程中会向sys.path 添加特殊条目,且引导脚本会在该条目仍存在的情况下尝试加载可选的字节码解密模块,因此使用PyInstaller < 6.0.0版本构建的应用可能被非特权攻击者诱骗执行任意Python代码。”
该漏洞的成因是:如果满足特定条件,攻击者可在可执行文件旁创建伪造目录或ZIP归档,模仿PyInstaller引导程序传输PYZ归档位置的格式,导致引导脚本错误导入恶意模块。
若可执行文件以高权限运行(例如启用setuid位),则任意代码也将以高权限执行,从而实现完全本地权限提升。
攻击前提条件
- 应用使用PyInstaller < 6.0.0版本打包(单文件夹和单文件模式均受影响)。
- 未启用可选字节码加密功能。
- 攻击者可在可执行文件同一目录创建文件/目录。
- 文件系统允许文件名包含
?(非Windows系统)。 - 攻击者能够确定嵌入式PYZ归档的偏移量。
满足上述条件时,攻击者可诱骗引导过程导入恶意模块,而非预期的内部组件。
修复措施与缓解建议
PyInstaller团队分两阶段修复了该问题:
- PyInstaller 6.0.0:移除字节码加密支持,消除攻击向量(引导脚本不再尝试加载字节码解密模块)。
-
PyInstaller 6.10.0:进一步强化引导过程,不再使用
sys.path传输PYZ归档位置。
对于无法立即升级的环境,公告建议:
- 对包含高权限可执行文件(如setuid二进制文件)的目录应用严格权限控制。
- 确保攻击者无法在敏感可执行文件旁创建任意文件。








发表评论
您还未登录,请先登录。
登录