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

PostgreSQL 13.2, 12.6, 11.11, 10.16, 9.6.21, and 9.5.25 发布!

发布于 2021-02-11,作者 PostgreSQL Global Development Group
PostgreSQL 项目 安全

PostgreSQL 全球开发组发布了对我们数据库系统所有受支持版本的更新,包括 13.2、12.6、11.11、10.16、9.6.21 和 9.5.25。此次发布修复了两个安全漏洞,并解决了过去三个月报告的 80 多个错误。

此外,这是PostgreSQL 9.5 的最终发布版本。如果您在生产环境中使用 PostgreSQL 9.5,我们建议您计划进行升级。

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

安全问题

CVE-2021-3393:分区约束违反错误会泄露被拒绝访问的列的值

受影响版本:11 - 13。

拥有分区表 UPDATE 权限但缺少某些列 SELECT 权限的用户,可能会通过错误消息获取被拒绝访问的列的值。这与 CVE-2014-8161 类似,但利用条件更为罕见。

PostgreSQL 项目感谢 Heikki Linnakangas 报告此问题。

CVE-2021-20229:单列 SELECT 权限允许读取所有列

受影响版本:13。

拥有单个列 SELECT 权限的用户可以构造一个特殊的查询,返回该表的所有列。

此外,使用列级权限的存储视图将具有不完整的列使用位图。在依赖列级权限进行安全防护的安装环境中,建议对所有用户定义的视图执行 CREATE OR REPLACE,以强制重新解析它们。

PostgreSQL 项目感谢 Sven Klemm 报告此问题。

错误修复和改进

此次更新修复了过去几个月报告的 80 多个错误。其中一些问题仅影响版本 13,但也可能适用于其他受支持的版本。

部分修复包括:

  • 修复了 GiST 索引的一个问题,在该问题中并发插入可能导致索引损坏,将条目放置在错误的页面上。您应该对任何受影响的 GiST 索引执行 REINDEX
  • 修复了 CREATE INDEX CONCURRENTLY,以确保将来自并发预备事务的行包含在索引中。启用了预备事务的安装应为任何并发构建的索引执行 REINDEX
  • 修复了哈希聚合溢出到磁盘时可能出现的查询结果不正确的问题。
  • 修复了增量排序中的一个边缘情况,该情况可能导致排序结果不正确或出现“在有界排序中检索到过多元组”的错误。
  • 通过扩展查询协议(例如,从预备语句)执行执行事务回滚的 CALLDO 语句时,避免崩溃。
  • 修复了 PL/pgSQL 过程调用另一个过程时发生的失败,该过程具有带有 OUT 参数并且执行了 COMMITROLLBACK
  • 删除了分区表上 BEFORE UPDATE 触发器中不再适用的约束条件产生的错误。
  • 修复了带有 join 的查询中的几个问题,这些问题可能导致出现“relid N 的关系条目不存在”或“未能构建任何 N 路 join”等错误消息。
  • 在尝试并行排序时,不要将 ORDER BY 表达式中的并行限制函数或集合返回函数考虑在内。
  • 修复了 ALTER DEFAULT PRIVILEGES 以安全地处理重复参数。
  • 修复了 wal_level 设置为 minimal 时的几个行为问题,包括事务中表重写的情况。
  • 修复了 CREATE TABLE LIKE 的几个问题。
  • 确保当事务提交时,已删除关系(例如表)的已分配磁盘空间被及时释放。
  • 修复了 CLUSTER 的进度报告。
  • 修复了 COPY FROM 中反斜杠转义的多字节字符的处理。
  • 修复了 LISTEN/NOTIFY 队列处理中最近引入的竞争条件。
  • 允许 jsonb 连接运算符 (||) 处理所有 JSON 数据类型的组合。
  • 修复了 WAL 读取逻辑,使备用服务器能够正确处理时间线切换。此问题可能表现为“请求的 WAL 段已被移除”等错误。
  • 在逻辑解码和复制方面,对 walsender 进程进行了多项内存泄漏修复。
  • 确保 krb_server_keyfile 的非空值始终优先于服务器环境中 KRB5_KTNAME 的任何设置。
  • 对 GSS 加密支持进行了多项修复。
  • 确保 \connect 命令允许在 connection_string 参数中使用密码。
  • 修复了 \help 命令中的各种错误。
  • pg_dump 进行了多项修复。
  • 确保 pg_rewind 在重置备用服务器时考虑所有 WAL。
  • 修复了 contrib/auto_explain 中的内存泄漏。
  • 确保如果用户映射或外部服务器对象(这些连接依赖于这些对象)被删除,所有 postgres_fdw 连接都会被关闭。
  • 修复了 JIT 编译以兼容 LLVM 11 和 LLVM 12。

此次更新还包含 tzdata 版本 2021a,用于俄罗斯(伏尔加格勒时区)和南苏丹的夏令时法律变更,以及澳大利亚、巴哈马、伯利兹、百慕大、加纳、以色列、肯尼亚、尼日利亚、巴勒斯坦、塞舌尔和瓦努阿图的历史修正。

值得注意的是,澳大利亚/卡里(Australia/Currie)时区已得到修正,使其与澳大利亚/霍巴特(Australia/Hobart)时区相同。

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

PostgreSQL 9.5 已停止支持 (EOL)

这是 PostgreSQL 9.5 的最终发布版本。如果您在生产环境中使用 PostgreSQL 9.5,我们建议您计划升级到更新的、受支持的 PostgreSQL 版本。请参阅我们的 版本策略 以获取更多信息。

更新

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

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

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

注意:PostgreSQL 9.6 将于 2021 年 11 月 11 日停止接收修复。请参阅我们的 版本策略 以获取更多信息。

链接