PostgreSQL 12.3、11.8、10.13、9.6.18 和 9.5.22 发布!

发布于 2020-05-14,作者:PostgreSQL 全球开发小组
PostgreSQL 项目 安全

PostgreSQL 全球开发小组发布了我们数据库系统所有受支持版本的更新,包括 12.3、11.8、10.13、9.6.18 和 9.5.22。此版本修复了在 PostgreSQL 服务器中发现的一个安全问题,以及过去三个月报告的 75 多个错误。

请尽快计划更新。

安全问题

  • CVE-2020-10733:Windows 安装程序从不受控制的目录运行可执行文件。

受影响的版本:9.5 - 12。安全团队不测试不受支持的版本,但此问题在 PostgreSQL 9.5 之前就已存在。

PostgreSQL 的 Windows 安装程序调用不具有完全限定路径的系统提供的可执行文件。安装程序加载的目录或当前工作目录中的可执行文件优先于预期的可执行文件。有权在这些目录之一中添加文件的攻击者可以利用此漏洞,使用安装程序的管理员权限执行任意代码。

PostgreSQL 项目感谢侯靖毅(@hjy79425575)报告此问题。

错误修复和改进

此更新还修复了过去几个月报告的 75 多个错误。其中一些问题仅影响版本 12,但也可能影响所有受支持的版本。

其中一些修复包括

  • 对 GENERATED 列的多个修复,包括当生成的列的输出与表上的物理列完全相同时,可能会导致表崩溃或数据损坏的问题,例如,如果表达式调用可以返回自身输入的函数。
  • ALTER TABLE 的多个修复,包括确保 SET STORAGE 指令传播到表的索引。
  • 修复在使用 DROP OWNED BY 时,当另一个会话正在删除同一对象时,可能出现的竞争条件。
  • 允许在分区具有继承的 ROW 触发器时将其分离。
  • REINDEX CONCURRENTLY 的多个修复,特别是当 REINDEX CONCURRENTLY 操作失败时的问题。
  • 修复在分区绑定表达式中将 COLLATE 应用于不可排序的类型时发生的崩溃。
  • 修复浮点溢出/下溢检测中的性能下降。
  • 对全文搜索的多个修复,特别是短语搜索。
  • 修复在查询的 FROM 子句中使用的返回集合函数的查询生命周期内存泄漏。
  • VACUUM VERBOSE 输出的多个报告修复。
  • 允许类型为 circle 的输入接受文档中指定的格式 (x,y),r
  • 允许 get_bit()set_bit() 函数在长度超过 256MB 的 bytea 字符串上不失败。
  • 避免在崩溃恢复期间过早回收 WAL 段,这可能会导致 WAL 段在存档之前被回收。
  • 通过跳过不相关的时间线,避免在恢复期间尝试从存档存储中获取不存在的 WAL 文件。
  • 对逻辑复制和复制槽的多个修复。
  • 修复同步备用管理中的多个竞争条件,包括在更改 synchronous_standby_names 设置时发生的一个竞争条件。
  • 对 GSSAPI 支持的多个修复,包括修复在使用 GSSAPI 加密时发生的内存泄漏。
  • 确保 pg_read_all_stats 角色的成员可以读取所有统计信息视图。
  • 修复 information_schema.triggers 视图中的性能下降。
  • 修复在使用 sslmode=verify-full 时 libpq 中的内存泄漏。
  • 修复在尝试重新建立失败的连接时 psql 中的崩溃。
  • 允许在 psql 中使用 Tab 键补全 \gx 命令的文件名参数。
  • 添加 pg_dumpALTER ... DEPENDS ON EXTENSION 的支持。
  • pg_dump 的其他几个修复,包括转储 RLS 策略的注释以及推迟事件触发器恢复到最后。
  • 确保 pg_basebackup 生成有效的 tar 文件。
  • pg_checksums 跳过属于不同 PostgreSQL 主要版本的表空间子目录
  • 多个 Windows 兼容性修复

此更新还包含摩洛哥和加拿大育空地区 DST 法规变更的 tzdata 2020a 版本,以及上海的历史修正。America/Godthab 时区已重命名为 America/Nuuk 以反映当前的英语用法;但是,旧名称仍然可用作兼容性链接。这还会更新 initdb 的已知 Windows 时区名称列表,以包含最近的添加项。

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

更新

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

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

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

链接