PostgreSQL 全球开发组已发布所有受支持 PostgreSQL 版本的更新,包括 17.6、16.10、15.14、14.19 和 13.22,以及 PostgreSQL 18 的第三个 beta 版本。此次发布修复了 3 个安全漏洞和过去几个月报告的 55 个以上错误。
如果您之前使用 numeric_minmax_multi_ops
操作符类创建了 BRIN 索引,请在升级实例后参阅“更新”部分以获取额外说明。
有关更改的完整列表,请参阅 发行说明。
PostgreSQL 13 将于 2025 年 11 月 13 日停止接收修复。如果您在生产环境中使用 PostgreSQL 13,我们建议您计划升级到更新的、受支持的 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 报告此问题。
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 报告此问题。
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 索引可能导致其膨胀和效率低下的问题。请参阅“更新”部分,了解如何修复这些索引的说明。SIMILAR TO
表达式中处理嵌套字符类(例如 [[:alpha:]%_]
)的方式。MERGE
进行了多项修复,包括并发时和目标表为继承层级父表时的查询结果不正确的问题。shared_buffers
设置非常大的系统上发生检查点时的无限循环。PQcancelCreate()
中的崩溃问题。所有 PostgreSQL 更新版本都是累积的。与其他次要版本一样,用户不需要转储和重新加载数据库或使用 pg_upgrade
来应用此更新版本;您可以直接关闭 PostgreSQL 并更新其二进制文件。
如果您有任何使用 numeric_minmax_multi_ops
操作符类的 BRIN 索引,建议在更新后对其进行 REINDEX
,以修复任何潜在的膨胀和效率低下问题。
跳过一个或多个更新版本的用户可能需要运行额外的更新后步骤;请参阅早期版本的发行说明以获取详细信息。
有关更多详细信息,请参阅 发行说明。
此次发布是 PostgreSQL 18 的第三个 beta 版本,使社区离通用可用性(暂定于 2025 年 9 月/10 月)又近了一步。
本着开源 PostgreSQL 社区的精神,我们强烈鼓励您在您的系统上测试 PostgreSQL 18 的新功能,以帮助我们消除错误和其他问题。虽然我们不建议您在生产环境中使用 PostgreSQL 18 Beta 3,但我们鼓励您寻找方法来运行您典型的应用程序工作负载来测试此 beta 版本。
您的测试和反馈有助于社区确保 PostgreSQL 18 保持我们交付世界上最先进的开源关系型数据库的稳定、可靠的发布标准。请阅读我们关于 beta 测试过程的更多信息,以及您如何做出贡献。
https://postgresql.ac.cn/developer/beta/
要从早期版本的 PostgreSQL 升级到 PostgreSQL 18 Beta 3,您需要使用类似于在 PostgreSQL 主版本之间进行升级的策略(例如 pg_upgrade
或 pg_dump
/ pg_restore
)。有关更多信息,请访问关于 升级 的文档部分。
PostgreSQL 18 Beta 3 中的修复和更改包括:
can't get cancellation key
错误。pg_dumpall --statistics-only
和 --no-schema
中转储过多的对象。pg_dumpall
的非文本输出文件格式。date_trunc(..., 'infinity'::timestamptz)
的问题。请参阅 发行说明 以获取新功能和更改功能的完整列表。
https://postgresql.ac.cn/docs/18/release-18.html
每个 PostgreSQL 版本的稳定性在很大程度上取决于您,也就是社区,在 PostgreSQL 18 通用可用之前,使用您的工作负载和测试工具测试即将发布的版本,以查找错误和回归。由于这是 Beta 版,数据库行为、功能细节和 API 仍可能发生微小更改。您的反馈和测试将有助于确定新功能的最终调整,因此请在不久的将来进行测试。用户测试的质量决定了我们何时可以进行最终发布。
一份 待办事项列表已在 PostgreSQL Wiki 上公开。您可以使用 PostgreSQL 网站上的此表单 报告错误。
https://postgresql.ac.cn/account/submitbug/
这是第 18 版的第三个 beta 版本。PostgreSQL 项目将在最终发布(大约在 2025 年 9 月/10 月)之前发布一个或多个发布候选版本。有关更多信息,请参阅 Beta 测试页面。
如果您对此版本公告有任何更正或建议,请将其发送至 pgsql-www@lists.postgresql.org 公共 邮件列表。