PostgreSQL 14.3、13.7、12.11、11.16 和 10.21 版本已发布!

由 PostgreSQL 全球开发组于 2022-05-12 发布
PostgreSQL 项目 安全

PostgreSQL 全球开发组已发布所有受支持的 PostgreSQL 版本的更新,包括 14.3、13.7、12.11、11.16 和 10.21。此版本修复了一个安全漏洞,并修复了过去三个月报告的 50 多个错误。

我们建议您尽早安装此更新。

如果您在列上使用了 ltree 数据类型的 GiST 索引,则需要在升级后重建索引

有关更改的完整列表,请查看发行说明

PostgreSQL 10 EOL 通知

PostgreSQL 10 将于 2022 年 11 月 10 日停止接收修复。如果您在生产环境中运行 PostgreSQL 10,我们建议您计划升级到更新的、受支持的 PostgreSQL 版本。请查看我们的版本控制策略以获取更多信息。

安全问题

CVE-2022-1552:自动清理、REINDEX 和其他操作省略了“安全限制操作”沙箱。

受影响的版本:10 - 14。安全团队通常不会测试不受支持的版本,但这个问题相当老旧。

当特权用户维护另一个用户的对象时,自动清理、REINDEXCREATE INDEXREFRESH MATERIALIZED VIEWCLUSTERpg_amcheck 在安全操作方面做得不完整。这些命令激活相关保护的时间太晚或根本没有激活。拥有在至少一个模式中创建非临时对象权限的攻击者可以以超级用户身份执行任意 SQL 函数。

虽然及时更新 PostgreSQL 是大多数用户最好的补救措施,但无法执行此操作的用户可以通过禁用自动清理、不手动运行上述命令以及不从 pg_dump 命令的输出还原数据来解决此漏洞。在这种解决方法下,性能可能会快速下降。VACUUM 是安全的,并且当受信任的用户拥有目标对象时,所有命令都可以正常运行。

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

错误修复和改进

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

包含在此版本中

  • 修复了可能导致 ltree 列上的 GiST 索引损坏的问题。升级后,您需要重建索引任何在 ltree 列上的 GiST 索引。
  • 现在,由整个行变量(例如 tbl.*)在 SELECT 列表的顶层之外生成的元组中的列名始终与关联的命名复合类型的列名关联(如果有的话)。如果您依赖以前的行为,发行说明详细说明了一种解决方法。
  • 修复了从 interval 类型提取纪元值时出现的不正确的舍入问题。
  • 防止调用 pg_stat_get_replication_slot(NULL) 时出现问题。
  • 修复了 table_to_xmlschema() 中类型 timestamptztimetz 的不正确输出。
  • 修复了与影响异步远程查询的计划器问题相关的错误。
  • 修复了如果使用 SEARCHCYCLE 功能的查询包含重复的公共表表达式 (WITH) 名称,则计划器会失败的问题。
  • 修复了 ALTER FUNCTION 以支持在同一命令中更改函数的并行属性及其 SET 变量列表。
  • 修复了在索引的主导键是表达式时,使用 CLUSTER 索引表行时出现的不正确排序。
  • 防止在排序的 GiST 索引构建后不久发生系统崩溃时的数据丢失。
  • 修复了删除分区索引时发生死锁故障的风险。
  • 修复了 DROP TABLESPACE 和检查点之间的竞争条件,这可能会导致无法从表空间目录中删除所有无效文件。
  • 修复了在与检查点重叠的 TRUNCATE 命令之后,崩溃恢复中可能出现的问题。
  • 重新允许 _ 作为自定义配置参数名称中的第一个字符。
  • 修复了当缺少 WAL 继续记录时,备用提升期间出现的 PANIC: xlog flush request is not satisfied 故障。
  • 修复了热备用冲突处理中出现自死锁的可能性。
  • 确保当服务器接近 max_sync_workers_per_subscription 限制时,可以重新启动逻辑复制应用工作线程。
  • 禁止在 PL/Perl 函数编译期间执行 SPI 函数。
  • libpq 现在接受 root 拥有的 SSL 私钥文件,这与服务器自 9.6 版本以来使用的规则相匹配。
  • 重新允许在 psqlpg_dumppg_amcheck 中使用 database.schema.table 模式。
  • 针对 pageinspect 的多个修复,以提高整体稳定性。
  • 当外表上存在 BEFORE INSERT ... FOR EACH ROW 触发器时,禁用 postgres_fdw 中的批量插入。
  • 更新 JIT 代码以使其与 LLVM 14 一起工作。

此更新还包含巴勒斯坦 DST 法律变更的 tzdata 2022a 版本,以及智利和乌克兰的历史修正。

有关可用更改的完整列表,请查看发行说明

更新

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

但是,如果您在列上使用了 ltree 数据类型的 GiST 索引,则需要在升级后重建索引

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

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

链接