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

PostgreSQL 15.3, 14.8, 13.11, 12.15 和 11.20 发布!

发布于 2023-05-11,作者:PostgreSQL 全球开发组
PostgreSQL 项目 安全

PostgreSQL 全球开发组发布了所有支持版本的 PostgreSQL 更新,包括 15.3、14.8、13.11、12.15 和 11.20。本次发布修复了两个安全漏洞以及过去几个月报告的 80 多个错误。

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

PostgreSQL 11 EOL (生命周期结束) 通知

PostgreSQL 11 将于 2023 年 11 月 9 日停止接收修复。如果您正在生产环境中使用 PostgreSQL 11,我们建议您计划升级到更新的支持版本。有关更多信息,请参阅我们的 版本策略

安全问题

CVE-2023-2454CREATE SCHEMA ... schema_element 绕过了保护性的 search_path 更改。

受影响版本:11 - 15。安全团队通常不测试不受支持的版本,但此问题已存在很长时间。

这使得拥有数据库级别 CREATE 权限的攻击者能够以引导超级用户的身份执行任意代码。数据库所有者默认拥有该权限,并且明确的授权可以将其扩展到其他用户。

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

CVE-2023-2455:行安全策略在内联后忽略用户 ID 更改。

受影响版本:11 - 15。安全团队通常不测试不受支持的版本,但此问题已存在很长时间。

虽然 CVE-2016-2193 修复了行安全策略和用户 ID 更改之间的大部分交互,但它遗漏了一个涉及函数内联的场景。这可能导致在使用了特定角色的策略且给定查询在一个角色下规划然后由其他角色执行的情况下,应用了不正确的策略。这种情况可能发生在安全定义函数下,或者当一个普通用户和查询最初被规划然后跨多个 SET ROLE 重用时。应用不正确的策略可能会允许用户完成原本被禁止的读取和修改。这仅影响已使用 CREATE POLICY 定义了行安全策略的数据库。

PostgreSQL 项目感谢 Wolfgang Walther 报告此问题。

错误修复和改进

本次更新修复了过去几个月报告的 80 多个错误。以下列出的问题影响 PostgreSQL 15。其中一些问题也可能影响 PostgreSQL 的其他支持版本。

包含在此发布版本中

  • 修复了在 `STRATEGY = WAL_LOG` 时使用 CREATE DATABASE 的多处问题,包括潜在的数据损坏,可能导致模板/源数据库的修改丢失。
  • 修复了使用 CREATE SCHEMA AUTHORIZATION 时的崩溃问题。
  • 修复了 MERGE 的多处问题。
  • 修复了分区表中的触发器的多处问题。
  • 不允许修改存储在索引中的复合类型。
  • 确保在启用了 行级别安全 的情况下,从父表使用 COPY TO 时,不会复制子表的任何行。
  • 调整文本搜索相关的字符分类逻辑,以在数据库的默认排序规则使用 ICU 提供者时,正确检测当前区域设置是否为 C。
  • 重新允许 ISO-8601 间隔字段中使用指数表示法。
  • 改进了对各种无效 JSON 字符串字面量的错误报告。
  • 修复了由于 `vacuum_defer_cleanup_age` 大于当前的 64 位 xid 导致的数据损坏。
  • 修复了查询解析器和规划器的多处问题,包括更好地检测嵌套不当的聚合。
  • 修复了使用布尔值 `IS NOT TRUE` 和 `IS NOT FALSE` 条件时的分区修剪错误。在此之前,`NULL` 分区会被意外修剪。
  • 修复了 memoize plan 执行中的内存泄漏。
  • 修复了在使用分区的外部表进行批量插入时发生的缓冲区引用计数泄漏。
  • 恢复了对亚毫秒级 `vacuum_cost_delay` 设置的支持。
  • 修复了 视图和规则 的多处问题。
  • 在扫描具有多个扫描键的多列 BRIN 索引时,避免了不必要的工作。
  • 在逻辑复制 `UPDATE` 或 `DELETE` 操作时,忽略已删除的列和生成的列。
  • 修复了等待事件的命名和可用性的多处问题。
  • 支持 SCRAM-SHA-256 通道绑定的 RSA-PSS 证书。此功能需要使用 OpenSSL 1.1.1 或更高版本进行构建。
  • 避免了 Windows 上进程 ID 跟踪的竞态条件。
  • 修复了在 PL/PerlPL/Python 中使用转换表达式的 DO 块的会话内内存泄漏。
  • 在将列表结构转换为多维 SQL 数组时,收紧了来自 PL/PerlPL/Python 的数组维度检查。
  • 修复了 pg_dump,以便可以成功恢复基于 枚举类型列进行哈希分区的分区表。
  • 修复了 pg_trgm 中无法满足的正则表达式在使用 GiST 或 GIN 索引时可能导致的崩溃。
  • 限制了 pg_walinspect 中 `pg_get_wal_records_info()` 的内存使用。

本次发布还更新了时区数据文件至 tzdata release 2023c,以处理埃及、格陵兰、摩洛哥和巴勒斯坦的夏令时法规变更。在观测莫斯科时间时,Europe/Kirov 和 Europe/Volgograd 现在使用 MSK/MSD 缩写而不是数字缩写,以与其他观测莫斯科时间的时区保持一致。此外,America/Yellowknife 不再与 America/Edmonton 不同;这会影响该地区一些 1948 年之前的日期时间戳。

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

更新

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

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

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

链接

如果您对此版本公告有任何更正或建议,请将其发送至 pgsql-www@lists.postgresql.org 公共 邮件列表