PostgreSQL 11.4、10.9、9.6.14、9.5.18、9.4.23 和 12 Beta 2 发布!

由 PostgreSQL 全球开发组发布于 2019-06-20
PostgreSQL 项目 安全

PostgreSQL 全球开发组发布了我们数据库系统所有受支持版本的更新,包括 11.4、10.9、9.6.14、9.5.18 和 9.4.23,以及 PostgreSQL 12 的第二个测试版。此版本修复了一个安全问题以及自 5 月份上次累积更新以来的 25 多个错误。

此版本是在正常更新发布计划之外发布的,因为该安全漏洞被认为非常严重,需要尽快分发修复程序。 运行 PostgreSQL 10、PostgreSQL 11 或 PostgreSQL 12 测试版的用户应尽快升级。

所有其他用户应计划在下次计划停机时应用此更新。

安全问题

此版本修复了一个安全漏洞

  • CVE-2019-10164:通过设置密码引起的基于堆栈的缓冲区溢出

受影响的版本:10、11、12 测试版。

经过身份验证的用户可以通过将自己的密码更改为精心构造的值来创建基于堆栈的缓冲区溢出。除了能够使 PostgreSQL 服务器崩溃之外,还可以进一步利用它来以 PostgreSQL 操作系统帐户的身份执行任意代码。

此外,恶意服务器可能会在 SCRAM 身份验证过程中发送一条专门构造的消息,并导致启用 libpq 的客户端崩溃或以客户端的操作系统帐户身份执行任意代码。

此问题通过升级并重新启动 PostgreSQL 服务器以及 libpq 安装来修复。我们鼓励所有运行 PostgreSQL 10、11 和 12 测试版的用户尽快升级。

PostgreSQL 项目感谢 Alexander Lakhin 报告此问题。

错误修复和改进

此更新还修复了自 5 月份上次累积更新以来的 25 多个错误。其中一些问题仅影响版本 11,但许多问题影响所有受支持的版本。

其中一些修复包括

  • 修复运行时分区修剪中的各种错误,这些错误可能导致分区表查询中的错误答案
  • pg_dump 现在使用 CREATE TABLEALTER TABLE .. ATTACH PARTITION 重新创建表分区,而不是在创建命令中包含 PARTITION OF
  • 改进 initdb 如何确定要选择哪个系统时区(如果该时区存在等效名称)。此外,明确优先选择 UTC 而不是 UCT
  • 修复尝试将触发器定义复制到新分区时可能发生的崩溃
  • 修复当表具有部分排除约束时 ALTER TABLE .. ALTER COLUMN TYPE 失败的问题
  • 修复对域的注释的 COMMENT 命令失败的问题
  • 与聚合相关的几个修复
  • 修复可能导致“找不到用于排序的 pathkey 项”错误的合并追加计划的错误生成
  • 修复视图包含具有重复联接名称的查询时,转储/还原失败的问题
  • 修复 json_to_record()json_populate_record() 中 JSON 字符串文字到 JSON 类型输出列的转换
  • 修复正则表达式中 {1,1} 量词的不正确优化
  • 修复 B 树索引在涉及 INCLUDE 子句覆盖的列的边缘情况失败期间的问题,该问题在 VACUUM 期间会显示错误。如果此问题影响您,则需要重新索引特定索引
  • 修复检查是否存在冲突的 postmaster 仍在使用的预先存在的共享内存段时的竞争条件
  • 修复 walreceiver 进程,避免在关闭时发生崩溃或死锁
  • 如果使用 SSL 并且 OpenSSL 的待处理数据缓冲区包含 256 字节的整数倍,则避免 libpq 中可能发生的挂起
  • 修复 pg_dumppg_dumpall 为数据库和表空间发出的 GRANT 命令的顺序
  • 修复 reindexdb 中的误导性错误报告
  • 确保如果在使用并行作业时发生错误,vacuumdb 返回正确的状态
  • 修复 contrib/auto_explain 以避免在并行查询中引起问题,这会导致诸如“在 shm TOC 中找不到键 N”之类的失败
  • contrib/postgres_fdw 中考虑本地 BEFORE ROW UPDATE 触发器可能导致的数据修改
  • 在 Windows 上,当数据库编码设置为 SQL_ASCII 且我们尝试记录非 ASCII 字符串时,避免失败

更新

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

如果您的使用 INCLUDE 子句的 B 树索引之一受到上述问题的影响,则需要重新索引任何受影响的索引。此问题会在 VACUUM 期间根据发生的错误显示。您可以在此处阅读有关重新索引的更多信息

https://postgresql.ac.cn/docs/current/sql-reindex.html

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

PostgreSQL 9.4 将于 2020 年 2 月 13 日停止接收修复。有关更多信息,请参阅我们的版本控制策略

测试版计划

这包括版本 12 的第二个测试版。PostgreSQL 项目将根据测试的需要发布其他测试版,然后发布一个或多个候选版本,直到 2019 年底最终发布。有关更多信息,请参阅测试版测试页面。

链接