PostgreSQL 17.6、16.10、15.14、14.19、13.22 以及 18 Beta 3 发布!

发布于 2025-08-14,PostgreSQL Global Development Group
PostgreSQL 安全相关

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

如果您此前使用 numeric_minmax_multi_ops 运算符类创建过 BRIN 索引,请参阅"更新"章节,了解升级实例后的额外操作说明。

完整变更列表请查阅发布说明

PostgreSQL 13 生命周期终止通知

PostgreSQL 13 将于 2025 年 11 月 13 日停止接收修复更新。如果您正在生产环境中运行 PostgreSQL 13,建议您尽早制定升级计划,迁移到更新的受支持版本。更多信息请参阅我们的版本策略

安全问题

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 恢复转储文件时,以运行 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 恢复转储时以运行 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 报告此问题。

Bug 修复与改进

本次更新修复了过去数月报告的 55 个以上的 Bug。以下列出的问题影响 PostgreSQL 17,其中部分问题也可能影响其他受支持版本。

  • 修复了使用 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 的新功能,帮助我们发现 Bug 和其他问题。虽然我们不建议在生产环境中运行 PostgreSQL 18 Beta 3,但鼓励您尝试使用此 Beta 版本运行您的典型应用工作负载。

您的测试和反馈有助于社区确保 PostgreSQL 18 保持我们一贯的标准——交付一个稳定、可靠的世界最先进开源关系数据库版本。请阅读更多关于我们的Beta 测试流程以及如何参与贡献的信息:

https://www.postgresql.org/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://www.postgresql.org/docs/18/release-18.html

Bug 与兼容性测试

每个 PostgreSQL 版本的稳定性在很大程度上取决于社区的您,在 PostgreSQL 18 正式发布前使用您的工作负载和测试工具来测试即将发布的版本,以发现 Bug 和回退问题。由于这是 Beta 版本,数据库行为、功能细节和 API 仍可能会有少量变更。您的反馈和测试将帮助确定新功能的最终调整方案,因此请尽快进行测试。用户测试的质量有助于确定最终发布的时间。

PostgreSQL wiki 上公开维护着一份待解决问题列表。您可以通过 PostgreSQL 网站上的此表单提交 Bug 报告

https://www.postgresql.org/account/submitbug/

Beta 计划

这是 18 版本的第三个 Beta 版本。PostgreSQL 项目将在 2025 年 9 月/10 月左右正式发布前,发布一个或多个候选发布版本。更多信息请参阅 Beta 测试页面。

链接

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