PostgreSQL 全球开发小组已发布对所有受支持的 PostgreSQL 版本的更新,包括 16.1、15.5、14.10、13.13、12.17 和 11.22。此版本修复了三个安全漏洞和过去几个月报告的 55 多个错误。
此版本包含针对索引的修复,在某些情况下,我们建议重新索引。请参阅“更新”部分了解更多详细信息。
有关更改的完整列表,请查看发行说明。
这是 PostgreSQL 11 的最终版本。PostgreSQL 11 现在已停止生命周期,将不再接收安全和错误修复。如果您在生产环境中运行 PostgreSQL 11,我们建议您制定计划升级到更新的、受支持的 PostgreSQL 版本。请参阅我们的版本控制策略以获取更多信息。
CVSS v3 基本评分:4.3
受支持的易受攻击的版本:11 - 16。安全团队通常不测试不受支持的版本,但这个问题很早就存在。
接收“unknown”类型参数的某些聚合函数调用可能会从“unknown”类型值的末尾到下一个零字节处泄露服务器内存的字节。通常通过没有类型指定的字符串文字获得“unknown”类型的值。我们尚未确认或排除在泄露的字节中安排存在重要机密信息的可行攻击。
PostgreSQL 项目感谢 Jingzhou Fu 报告此问题。
CVSS v3 基本评分:8.8
受支持的易受攻击的版本:11 - 16。安全团队通常不测试不受支持的版本,但这个问题很早就存在。
在修改某些 SQL 数组值时,缺少溢出检查让经过身份验证的数据库用户可以将任意字节写入有助于执行任意代码的内存区域。缺少溢出检查还让经过身份验证的数据库用户可以读取大范围的服务器内存。CVE-2021-32027 修复程序涵盖了对此类描述的一些攻击,但它遗漏了其他攻击。
PostgreSQL 项目感谢 Pedro Gallegos 报告此问题。
pg_signal_backend
可以向某些超级用户进程发送信号CVSS v3 基本评分:2.2
受支持的易受攻击的版本:11 - 16。安全团队通常不测试不受支持的版本,但这个问题很早就存在。
文档说 pg_signal_backend
角色不能向“超级用户拥有的后端”发送信号。相反,它可以向后台工作程序(包括逻辑复制启动器)发送信号。它可以向 autovacuum
工作程序和 autovacuum
启动器发送信号。向 autovacuum
工作程序和这两个启动器发送信号不会提供有意义的利用,因此要利用此漏洞需要一个具有不太可靠的后台工作程序的非核心扩展。例如,一个不自动重启的非核心后台工作程序会遇到针对特定后台工作程序的拒绝服务。
PostgreSQL 项目感谢 Hemanth Sandrana 和 Mahendrakar Srinivasarao 报告此问题。
此更新修复了过去几个月报告的 55 多个错误。下面列出的问题会影响 PostgreSQL 16。其中一些问题也可能会影响其他受支持的 PostgreSQL 版本。
interval
列中的重复项的问题。安装此更新后,请重新索引包含 interval
列的任何 B 树索引。minmax_multi
opsclass 时,在 BRIN 索引中提供更有效的 date
、timestamptz
和 timestamp
值索引。虽然不是必需的,但我们建议安装此更新后,重新索引包含这些数据类型的 BRIN 索引。如果 pgrowlocks()
应用于分区表,则抛出正确的错误
修复了在使用 READ COMMITTED
模式时,在 MERGE
期间对并发更新的行进行不一致的重新检查的问题。
UPDATE
/DELETE
/MERGE
中正确识别目标表。tsvector
的过度分配。ALTER SUBSCRIPTION
以应用 run_as_owner
选项中的更改。COPY FROM
的一些修复,pg_control
的撕裂读取的一些修复。ORDER BY
或 DISTINCT
选项的聚合函数时发生的“找不到用于排序的路径键项”错误。track_io_timing
时,将关系扩展操作所用的时间包括为写入时间。CALL
语句的依赖项,并在需要时重新规划它们。FATAL
。pg_dump
以转储订阅的新 run_as_owner
选项。pg_restore
,以便选择性还原将包括所选表的表级和列级 ACL。pg_upgrade
添加逻辑,以检查是否使用了过时的数据类型 abstime
、reltime
和 tinterval
。vacuumdb
,使多个 -N
开关实际上可以排除多个模式中的表。amcheck
将不再将中断的页面删除报告为损坏。<
和 <=
运算符时 interval
列上的 btree_gin
索引无法正确返回数据的问题。所有 PostgreSQL 更新版本都是累积的。与其他次要版本一样,用户不需要转储和重新加载数据库或使用 pg_upgrade
即可应用此更新版本;您只需关闭 PostgreSQL 并更新其二进制文件即可。
我们建议在应用此更新后重新索引某些类型的索引,包括
interval
数据类型的 B 树索引date
、timestamptz
和 timestamp
数据类型以及 minmax_multi
opsclass 的 BRIN 索引在 PostgreSQL 12 及更高版本中,您可以使用 REINDEX CONCURRENTLY
以避免阻止对受影响的索引和表的写入,例如
REINDEX INDEX CONCURRENTLY your_index_name;
跳过一个或多个更新版本的用户可能需要运行额外的更新后步骤;有关详细信息,请参阅早期版本的发行说明。
有关更多详细信息,请参阅发行说明。
如果您对此发布公告有更正或建议,请将其发送到 pgsql-www@lists.postgresql.org 公共邮件列表。