内容提要
Python发布3.15.2、3.14.10、3.13.18、3.12.16和3.11.18紧急安全更新,主要应对eMudhra中间CA密钥泄露:ssl模块默认屏蔽这些密钥,使pip正常使用(含自我升级)免受相关攻击。更新还修复tarfile链接替换、http.cookiejar负版本cookie等问题,并升级Expat、修正Windows mimetypes读取及临时目录清理竞态。建议受影响用户尽快升级。
延伸解读
紧急安全更新的核心:中间CA密钥泄露
本次多个Python版本紧急发布,直接原因是eMudhra中间CA密钥被泄露。Python的ssl模块默认屏蔽这些密钥,作为防止其被滥用的最后手段。这意味着即使pip尚未更新,正常使用pip(包括自我升级)也能免受基于这些泄露密钥的攻击。这体现了在证书链信任层面进行防御的价值,而不仅依赖应用层修补。
各版本修复内容存在差异
五个版本共享两项安全修复:tarfile.tar_filter拒绝替换目标的链接,以及http.cookiejar拒绝负版本cookie。但3.13.18、3.12.16和3.11.18还包含Expat升级至2.9.0、Windows默认不读取mimetypes.knownfiles等修复,这些已在3.15.1和3.14.9中提供。3.13.18和3.12.16另有临时目录清理竞态修复。用户需根据自身版本确认覆盖范围。
发布形式与升级建议
3.15.2和3.14.10提供二进制安装程序,而3.13.18、3.12.16和3.11.18仅为源码安全版本。官方强烈建议所有受影响版本的用户尽快升级。由于这是安全修复,延迟升级可能使系统暴露于已知风险,尤其是依赖ssl模块和pip的场景。
Q&A
Python 3.15.2、3.14.10、3.13.18、3.12.16 和 3.11.18 这些版本为什么紧急发布?
这些版本是针对 eMudhra 中间 CA 密钥泄露的紧急安全更新。ssl 模块默认屏蔽了这些被泄露的密钥,作为防止其被使用的最后手段。
eMudhra 中间 CA 密钥泄露对 pip 有什么影响?升级后是否安全?
泄露的密钥可能被用于攻击 pip 的正常使用。升级后,ssl 模块会屏蔽这些密钥,因此即使 pip 尚未更新,其正常使用(包括自我升级)也已免受基于这些密钥的攻击。
这些版本修复了哪些与 tarfile 和 http.cookiejar 相关的安全问题?
修复了 tarfile.tar_filter 中拒绝替换目标链接的问题(CVE-2026-114583),以及 http.cookiejar 中拒绝负版本 cookie 的问题(gh-160300)。
Python 3.13.18、3.12.16 和 3.11.18 相比 3.15.2 和 3.14.10 有哪些额外的安全内容?
这些版本还包含了更新捆绑的 Expat 至 2.9.0(CVE-2026-77214、CVE-2026-102633)、在 Windows 上默认不读取 mimetypes.knownfiles(CVE-2024-3220),以及修复额外的头部重新折叠-引用边缘情况(gh-87720)。这些修复已包含在 Python 3.15.1 和 3.14.9 中。
Python 3.13.18 和 3.12.16 还修复了哪个特定问题?
这两个版本还修复了 tempfile.TemporaryDirectory 清理中的竞态条件(gh-157579),该修复已包含在 Python 3.15.0 和 3.14.9 中。
这些版本是否提供二进制安装程序?
Python 3.15.2 和 3.14.10 提供二进制安装程序;Python 3.13.18、3.12.16 和 3.11.18 是仅源代码的安全版本。