PostgreSQL 14.1、13.5、12.9、11.14、10.19 和 9.6.24 发布!

发布于 2021-11-11,由 PostgreSQL 全球开发小组发布
PostgreSQL 项目 安全

PostgreSQL 全球开发小组已发布我们数据库系统所有受支持版本的更新,包括 14.1、13.5、12.9、11.14、10.19 和 9.6.24。此版本修复了两个安全漏洞,并修复了过去三个月报告的 40 多个错误。

此外,这是 PostgreSQL 9.6 的最终版本。如果您在生产环境中运行 PostgreSQL 9.6,我们建议您制定升级计划。

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

安全问题

CVE-2021-23214:服务器进程从中间人处接收未加密的字节

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

当服务器配置为使用带有 clientcert 要求的 trust 身份验证或使用 cert 身份验证时,即使使用 SSL 证书验证和加密,中间人攻击者也可以在首次建立连接时注入任意 SQL 查询。

PostgreSQL 项目感谢 Jacob Champion 报告此问题。

CVE-2021-23222:libpq 处理来自中间人的未加密字节

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

尽管使用了 SSL 证书验证和加密,中间人攻击者仍可以向客户端的最初几个查询注入虚假响应。

如果满足更多前提条件,攻击者可以泄露客户端的密码或会话早期可能传输的其他机密数据。攻击者必须有一种方法来欺骗客户端的目标服务器,使其能够访问攻击者的机密数据。一个已知的具有该属性的实现是一个容易受到 CVE-2021-23214 攻击的 PostgreSQL 配置。

与任何对 CVE-2021-23214 的利用一样,服务器必须使用带有 clientcert 要求的 trust 身份验证或使用 cert 身份验证。要泄露密码,客户端必须拥有密码,这在使用容易受到 CVE-2021-23214 攻击的身份验证配置时是非典型的。攻击者必须有其他方法来访问服务器以检索泄露的数据(一个有效的、非特权的登录帐户就足够了)。

PostgreSQL 项目感谢 Jacob Champion 报告此问题。

错误修复和改进

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

其中一些修复包括

  • 修复了在主服务器发送完以部分 WAL 记录结尾的 WAL 段后崩溃的情况下的物理复制。应用此更新时,请在主服务器之前更新备用服务器,以便在主服务器恰好崩溃时它们可以准备好处理修复。
  • 修复了并行 VACUUM,使其在表至少有两个大于该大小的索引时,能够处理低于 min_parallel_index_scan_size 阈值的索引。此问题不会影响自动清理。如果您受到此问题的影响,则应重新索引任何手动清理的表。
  • 修复了 CREATE INDEX CONCURRENTLYREINDEX CONCURRENTLY 写入损坏索引的原因。您应该重新索引任何并发构建的索引。
  • 修复了附加/分离分区的问题,该问题可能导致某些 INSERT/UPDATE 查询在活动会话中行为不正常。
  • 修复了使用 CREATE TYPE 创建新范围类型的问题,该问题可能会导致后续事件触发器或后续执行 CREATE TYPE 命令出现问题。
  • 修复了复合体中域的数组中元素字段的更新。
  • 禁止 FETCH FIRST WITH TIESFOR UPDATE SKIP LOCKED 的组合。
  • 修复了数字 power() 函数中边界情况下的精度损失。
  • 修复了子事务内部还原 Portal 的快照的问题,这可能会导致崩溃。例如,当 COMMIT 之后紧跟着执行查询的 BEGIN ... EXCEPTION 块时,在 PL/pgSQL 中可能会发生这种情况。
  • 如果在导出快照后事务失败,则正确清理。如果创建了复制槽然后回滚,然后在同一会话中创建了另一个复制槽,则可能会发生这种情况。
  • 修复了备用服务器上“溢出子事务”环绕跟踪的问题,该问题可能导致性能下降。
  • 确保在提升备用服务器期间正确计算准备好的事务。
  • 确保在重命名表时使用正确的锁级别。
  • 避免在删除并发删除对象的角色时崩溃。
  • shared_memory_typesysv 时,禁止将 huge_pages 设置为 on。
  • 修复 PL/pgSQL RETURN QUERY 中的查询类型检查。
  • pg_dump 进行了多项修复,包括正确转储非全局默认权限的功能。
  • 使用 CLDR 项目的数据将 Windows 时区名称映射到 IANA 时区。

此更新还包含 tzdata 版本 2021e,用于斐济、约旦、巴勒斯坦和萨摩亚的 DST 法律变更,以及巴巴多斯、库克群岛、圭亚那、纽埃、葡萄牙和汤加的历史修正。

此外,Pacific/Enderbury 时区已重命名为 Pacific/Kanton。此外,以下时区已合并到附近的、人口较多的时区,自 1970 年以来它们的时钟与这些时区一致:Africa/Accra、America/Atikokan、America/Blanc-Sablon、America/Creston、America/Curacao、America/Nassau、America/Port_of_Spain、Antarctica/DumontDUrville 和 Antarctica/Syowa。在所有这些情况下,之前的时区名称仍然作为别名。

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

PostgreSQL 9.6 已终止支持

这是 PostgreSQL 9.6 的最终版本。如果您在生产环境中运行 PostgreSQL 9.6,我们建议您制定升级到较新的受支持的 PostgreSQL 版本的计划。有关更多信息,请参阅我们的版本控制策略

更新

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

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

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

链接