如果你还在用 Python 3.10,现在可能是最该关注的一次版本更新。2026 年 4 月,Python 官方一口气发布了 3.10.22、3.11.17、3.12.15、3.13.16 和 3.14.8 五个版本,其中 3.10.22 是 3.10 系列的最终版本——五年生命周期正式结束,此后不再有任何安全更新。这意味着,还在生产环境跑 3.10 的团队,升级已经不是“选做项”,而是“必做项”。

这次更新最核心的内容是安全修复,覆盖了所有五个版本。其中几个漏洞值得单独拎出来说。CVE-2026-19553 涉及 ssl 模块的 `wrap_bio()` 方法,它现在会校验 `server_side`、`server_hostname` 和 `session` 参数,asyncio 也会校验 TLS 的 `server_hostname`。简单说,就是之前某些参数不合法时不会报错,现在会直接抛异常,避免潜在的安全隐患。另一个值得关注的是 CVE-2026-82049,它修复了 tarfile 提取过滤器的一个漏洞——攻击者可以通过硬链接指向符号链接,把文件写到目标目录之外,甚至修改文件权限或修改时间。这类漏洞在解压不可信 tar 包时尤其危险。

zipfile 模块也有一个修复,CVE-2026-15310,针对 bzip2、LZMA 和 Zstandard 压缩成员的解压做了每次读取的上限,防止恶意的小压缩包触发巨大的内存分配。这个问题的本质是解压时没有限制单次读取的数据量,攻击者可以用一个很小的文件撑爆内存。另外,CVE-2026-17084 限制了 stringprep 和 IDNA 编解码器只接受 RFC 3454 定义的 Unicode 码点属性,这会影响域名解析相关的场景。CVE-2026-15806 则修复了 urllib.request 中 HTTPPasswordMgr 的一个问题——之前 HTTPS 的凭据可能被用于匹配 HTTP 的 URL,现在凭据会按 URL scheme 区分,避免跨协议泄露。

除了这些,3.13.16 和 3.14.8 还更新了内置的 OpenSSL 到 3.5.9,Windows、macOS、Android 和 iOS 平台都受益。3.10 到 3.12 的源码版本不捆绑 OpenSSL,所以不受影响。另外,3.10.22 还专门加强了对 XML hash-flooding 攻击的防护,这个在 3.11.16 里已经有了,现在补到了 3.10 上。

这次更新还有一个值得注意的细节:3.10.22 和 3.11.17 都是纯源码发布,没有 Windows 和 macOS 安装包。3.10 的二进制安装包停在 3.10.11,3.11 停在 3.11.9。如果你依赖官方安装包,升级路径要提前规划好。3.12.15 也是纯源码安全更新,而 3.13.16 是 3.13 系列的最后一个完整维护版本,之后的 3.13 只修安全问题。3.14.8 则是维护版本,这两个版本都提供了二进制安装包。

从版本生命周期看,Python 3.11 的安全修复会持续到 2027 年 10 月,3.12 到 2028 年 10 月,3.13 到 2029 年 10 月。如果你还在 3.10 上,最直接的迁移目标是 3.11 或 3.12,这两个版本在性能上比 3.10 有明显提升,而且还有足够长的安全支持窗口。

这次发布的另一个看点是官方公告里的一段“彩蛋”——用黑洞合并的 ringdown 信号来比喻 3.10 的退役。两个黑洞合并后,新形成的黑洞会通过引力波辐射逐渐稳定下来,这个过程就像敲钟后的余音,频率和衰减时间取决于黑洞的质量和自旋。Python 3.10 系列从发布到退役,五年时间,经历了特性迭代、bug 修复、构建系统的折腾,最后以一次安全更新收尾。这个比喻挺贴切,也提醒我们,任何软件都有生命周期,及时升级才是对生产环境负责。

对开发者来说,这次更新的实操建议很明确:先检查你的项目跑在哪个 Python 版本上,如果是 3.10,尽快规划升级;如果是 3.11 或 3.12,关注这次修复的安全漏洞是否影响你的使用场景,尤其是用到 tarfile、zipfile、ssl、urllib 这些模块的项目;如果是 3.13 或 3.14,直接升级到最新补丁版本即可。升级时注意,3.10 和 3.11 的源码版本没有官方安装包,可能需要自己编译或者用 pyenv、conda 这类工具管理。

另外,这次修复的漏洞里,tarfile 和 zipfile 的问题在 CI/CD 流水线中尤其常见——很多构建流程会解压第三方依赖包,如果这些包来自不可信源,风险就很高。建议在代码里显式使用 tarfile 的 `filter='data'` 参数,并且对解压后的文件做路径校验,避免路径穿越。ssl 相关的修复则提醒我们,TLS 配置的参数校验不能省,尤其是在做代理或网关类服务时。

总的来说,这次更新没有新特性,全是安全修复和生命周期收尾,但恰恰是这类更新最容易被忽视,也最容易在关键时刻出问题。花点时间确认你的 Python 版本和依赖模块,把该打的补丁打上,比什么都重要。

阅读原文 → 返回 AI 技术文档

内容与图片版权归原作者所有 · 原文: https://blog.python.org/2026/10/python-31022-31117/