2025年9月25日: PostgreSQL 18 发布!

PostgreSQL 17.6, 16.10, 15.14, 14.19, 13.22, and 18 Beta 3 发布!

发布于 2025-08-14,作者:PostgreSQL 全球开发组
PostgreSQL 项目 安全

PostgreSQL 全球开发组已发布所有受支持 PostgreSQL 版本的更新,包括 17.6、16.10、15.14、14.19 和 13.22,以及 PostgreSQL 18 的第三个 beta 版本。此次发布修复了 3 个安全漏洞和过去几个月报告的 55 个以上错误。

如果您之前使用 numeric_minmax_multi_ops 操作符类创建了 BRIN 索引,请在升级实例后参阅“更新”部分以获取额外说明。

有关更改的完整列表,请参阅 发行说明

PostgreSQL 13 EOL 通知

PostgreSQL 13 将于 2025 年 11 月 13 日停止接收修复。如果您在生产环境中使用 PostgreSQL 13,我们建议您计划升级到更新的、受支持的 PostgreSQL 版本。请参阅我们的 版本策略 以获取更多信息。

安全问题

CVE-2025-8713:PostgreSQL 优化器统计信息可能在视图、分区或子表中暴露采样数据

CVSS v3.1 基本分:3.1

受支持的、有漏洞的版本:13 - 17。

PostgreSQL 优化器统计信息允许用户读取用户无法访问的视图中的采样数据。另外,统计信息允许用户读取行安全策略旨在隐藏的采样数据。PostgreSQL 通过对列中的可用数据进行采样来维护表的统计信息;在查询规划过程中会参考这些数据。在此次发布之前,用户可以创建一个泄露信息的运算符,绕过视图访问控制列表 (ACL),并绕过分区或表继承层级中的行安全策略。可访问的统计信息数据尤其包括直方图和最常见值列表。CVE-2017-7484 和 CVE-2019-10130 旨在解决此类漏洞,但此漏洞仍然存在。受影响的版本包括 PostgreSQL 17.6、16.10、15.14、14.19 和 13.22 之前的版本。

PostgreSQL 项目感谢 Dean Rasheed 报告此问题。

CVE-2025-8714:PostgreSQL pg_dump 允许源服务器的超级用户在 psql 客户端执行任意代码

CVSS v3.1 基本分:8.8

受支持的、有漏洞的版本:13 - 17。

PostgreSQL 中 pg_dump 对不受信任数据的包含,允许恶意源服务器的超级用户通过 psql 元命令在恢复时作为运行 psql 的客户端操作系统帐户执行任意代码。pg_dumpall 也受到影响。pg_restore 在用于生成纯格式转储时也受到影响。这类似于 MySQL CVE-2024-21096。受影响的版本包括 PostgreSQL 17.6、16.10、15.14、14.19 和 13.22 之前的版本。

PostgreSQL 项目感谢 Martin Rakhmanov、Matthieu Denais 和 RyotaK 报告此问题。

CVE-2025-8715:PostgreSQL pg_dump 中对象名称的换行符在 psql 客户端和恢复目标服务器中执行任意代码

CVSS v3.1 基本分:8.8

受支持的、有漏洞的版本:13 - 17。

PostgreSQL 中 pg_dump 对换行符的不当处理,允许源服务器的用户通过目的构造的对象名称中的 psql 元命令,在恢复时作为运行 psql 的客户端操作系统帐户执行任意代码。同样的攻击也可以作为恢复目标服务器的超级用户实现 SQL 注入。pg_dumpall、pg_restore 和 pg_upgrade 也受到影响。受影响的版本包括 PostgreSQL 17.6、16.10、15.14、14.19 和 13.22 之前的版本。11.20 版本之前的版本不受影响。CVE-2012-0868 曾修复此类问题,但 11.20 版本重新引入了此问题。

PostgreSQL 项目感谢 Noah Misch 报告此问题。

错误修复和改进

此次更新修复了过去几个月报告的 55 个以上错误。以下列出的问题会影响 PostgreSQL 17。其中一些问题也可能影响其他受支持的 PostgreSQL 版本。

  • 修复了使用 numeric_minmax_multi_ops 操作符类的 BRIN 索引可能导致其膨胀和效率低下的问题。请参阅“更新”部分,了解如何修复这些索引的说明。
  • 对逻辑复制进行了多项修复,包括内存分配失败、事务重复回放、无限等待、意外关机以及备用服务器无法关机等问题。
  • 修复了检查点期间 WAL 的过早删除,这可能会影响使用复制槽时的恢复。
  • 回滚了一项可能拒绝大小超过 10MB 的 XML 文档的更改。
  • 修复了在 SIMILAR TO 表达式中处理嵌套字符类(例如 [[:alpha:]%_])的方式。
  • 恢复了 PL/pgSQL 表达式使用并行执行的能力。
  • 避免了 B-tree 索引可能修改错误条目的罕见情况。
  • MERGE 进行了多项修复,包括并发时和目标表为继承层级父表时的查询结果不正确的问题。
  • 修复了在数据可压缩性不高时可能发生的 LZ4 解压缩失败问题。
  • 防止在 shared_buffers 设置非常大的系统上发生检查点时的无限循环。
  • 修复了在使用具有大量组成员资格的 Active Directory 帐户时 GSSAPI 身份验证的问题。此次发布还修复了在使用非阻塞模式下的 SSL 或 GSSAPI 加密时的时序依赖性连接失败问题。
  • 修复了 libpq 函数 PQcancelCreate() 中的崩溃问题。
  • 修复了多个资源泄漏问题。

更新

所有 PostgreSQL 更新版本都是累积的。与其他次要版本一样,用户不需要转储和重新加载数据库或使用 pg_upgrade 来应用此更新版本;您可以直接关闭 PostgreSQL 并更新其二进制文件。

如果您有任何使用 numeric_minmax_multi_ops 操作符类的 BRIN 索引,建议在更新后对其进行 REINDEX,以修复任何潜在的膨胀和效率低下问题。

跳过一个或多个更新版本的用户可能需要运行额外的更新后步骤;请参阅早期版本的发行说明以获取详细信息。

有关更多详细信息,请参阅 发行说明

关于 PostgreSQL 18 Beta 的说明

此次发布是 PostgreSQL 18 的第三个 beta 版本,使社区离通用可用性(暂定于 2025 年 9 月/10 月)又近了一步。

本着开源 PostgreSQL 社区的精神,我们强烈鼓励您在您的系统上测试 PostgreSQL 18 的新功能,以帮助我们消除错误和其他问题。虽然我们不建议您在生产环境中使用 PostgreSQL 18 Beta 3,但我们鼓励您寻找方法来运行您典型的应用程序工作负载来测试此 beta 版本。

您的测试和反馈有助于社区确保 PostgreSQL 18 保持我们交付世界上最先进的开源关系型数据库的稳定、可靠的发布标准。请阅读我们关于 beta 测试过程的更多信息,以及您如何做出贡献。

https://postgresql.ac.cn/developer/beta/

升级到 PostgreSQL 18 Beta 3

要从早期版本的 PostgreSQL 升级到 PostgreSQL 18 Beta 3,您需要使用类似于在 PostgreSQL 主版本之间进行升级的策略(例如 pg_upgradepg_dump / pg_restore)。有关更多信息,请访问关于 升级 的文档部分。

Beta 2 以来的更改

PostgreSQL 18 Beta 3 中的修复和更改包括:

  • 修复了在简单查询中的性能回归问题。
  • 修复了在使用某些附加软件时观察到的 can't get cancellation key 错误。
  • 修复了后台工作进程在崩溃后未能重启的问题。
  • 修复了罕见的异步 I/O 故障。
  • 停止在 pg_dumpall --statistics-only--no-schema 中转储过多的对象。
  • 删除了 pg_dumpall 的非文本输出文件格式。
  • 修复了 32 位系统上 date_trunc(..., 'infinity'::timestamptz) 的问题。

请参阅 发行说明 以获取新功能和更改功能的完整列表。

https://postgresql.ac.cn/docs/18/release-18.html

测试 Bug 和兼容性

每个 PostgreSQL 版本的稳定性在很大程度上取决于您,也就是社区,在 PostgreSQL 18 通用可用之前,使用您的工作负载和测试工具测试即将发布的版本,以查找错误和回归。由于这是 Beta 版,数据库行为、功能细节和 API 仍可能发生微小更改。您的反馈和测试将有助于确定新功能的最终调整,因此请在不久的将来进行测试。用户测试的质量决定了我们何时可以进行最终发布。

一份 待办事项列表已在 PostgreSQL Wiki 上公开。您可以使用 PostgreSQL 网站上的此表单 报告错误

https://postgresql.ac.cn/account/submitbug/

Beta 时间表

这是第 18 版的第三个 beta 版本。PostgreSQL 项目将在最终发布(大约在 2025 年 9 月/10 月)之前发布一个或多个发布候选版本。有关更多信息,请参阅 Beta 测试页面。

链接

如果您对此版本公告有任何更正或建议,请将其发送至 pgsql-www@lists.postgresql.org 公共 邮件列表