2024年11月9日消息,PostgreSQL Global Development Group 已发布所有受支持的 PostgreSQL 版本的更新,包括 16.1、15.5、14.10、13.13、12.17 和 11.22 此版本修复了过去几个月报告的三个安全漏洞和超过 55 个错误。
此版本包括对索引的修复,在某些情况下,我们建议重新编制索引。有关详细信息,请参阅“更新”部分。
有关更改的完整列表,请查看发行说明。
PostgreSQL 11 EOL 通知
这是 PostgreSQL 11 的最终版本。PostgreSQL 11 现已结束生命周期,将不再收到安全和错误修复。如果您在生产环境中运行 PostgreSQL 11,我们建议您计划升级到更新的受支持版本的 PostgreSQL。有关详细信息,请参阅我们的版本控制策略。
安全问题
CVE-2023-5868:聚合函数调用中的内存泄露CVE-2023-5868: Memory disclosure in aggregate function calls
CVSS v3 基本分数: 4.3
受支持的易受攻击版本:11 - 16。安全团队通常不会测试不受支持的版本,但这个问题由来已久。
某些接收“未知”类型参数的聚合函数调用可能会泄露从“未知”类型值末尾到下一个零字节的服务器内存字节。通常通过没有类型指定的字符串文字获取“未知”类型值。我们尚未确认或排除在已披露字节中安排存在值得注意的机密信息的攻击的可行性。
PostgreSQL 项目感谢 Jingzhou Fu 报告此问题。
CVE-2023-5869:数组修改中整数溢出导致缓冲区溢出
CVSS v3 基本分数: 8.8
受支持的易受攻击版本:11 - 16。安全团队通常不会测试不受支持的版本,但这个问题由来已久。
在修改某些 SQL 数组值时,缺少溢出检查允许经过身份验证的数据库用户将任意字节写入内存区域,以便于执行任意代码。缺少溢出检查还允许经过身份验证的数据库用户读取大范围的服务器内存。CVE-2021-32027 修复涵盖了此描述的一些攻击,但它遗漏了其他攻击。
PostgreSQL 项目感谢 Pedro Gallegos 报告此问题。
CVE-2023-5870:角色 pg_signal_backend 可以向某些超级用户进程发出信号
CVSS v3 基本分数: 2.2
受支持的易受攻击版本:11 - 16。安全团队通常不会测试不受支持的版本,但这个问题由来已久。
文档称,该 pg_signal_backend 角色不能表示“超级用户拥有的后端”。相反,它可以向后台工作线程发出信号,包括逻辑复制启动器。它可以向工人和 autovacuum 发射器发出信号 autovacuum 。向 autovacuum 工作线程发送信号和这两个启动器不会提供有意义的漏洞利用,因此利用此漏洞需要具有弹性较差的后台工作线程的非核心扩展。例如,不自动重启的非核心后台工作线程将遇到与该特定后台工作线程相关的拒绝服务。
PostgreSQL 项目感谢 Hemanth Sandrana 和 Mahendrakar Srinivasarao 报告此问题。
Bug 修复和改进
此更新修复了过去几个月中报告的超过 55 个错误。下面列出的问题会影响 PostgreSQL 16。其中一些问题还可能影响其他受支持的 PostgreSQL 版本。
- 修复了 GiST 索引在“页面拆分”操作期间出现错误行为的问题,该行为可能导致后续索引搜索中出现错误的结果。安装此更新后,请重新索引 GiST 索引。
- 修复了 B 树索引错误地删除
interval重复列的问题。安装此更新后,请重新索引任何包含interval列的 B 树索引。 - 使用
minmax_multiopsclass 时,在 BRIN 索引中提供更高效的date、timestamptz和timestamp值索引。虽然不是必需的,但我们建议在安装此更新后重新索引包含这些数据类型的 BRIN 索引。 - 修复了将批量表插入分区表的问题。
- 修复了在步骤生成和运行时修剪期间具有多个分区键的哈希分区表,在某些情况下可能导致崩溃。
如果
pgrowlocks()应用于分区表,则引发正确的错误修复了在使用
READ COMMITTED模式时MERGE并发更新的行重新检查不一致的问题。- 正确标识继承的 /
UPDATE/DELETEMERGE中的目标表,即使父表被约束排除。 - 修复构造
tsvector. - 修复
ALTER SUBSCRIPTION以应用run_as_owner选项中的更改。 - 的几个修复
COPY FROM, - 使用
pg_control处理撕裂读取的几个修复。 - 修复了使用
ORDER BYorDISTINCT选项规划聚合函数时出现的“找不到要排序的路径键项”错误。 - 启用后
track_io_timing,将关系扩展操作所花费的时间包括为写入时间。 - 跟踪缓存
CALL语句的依赖关系,并在需要时重新规划它们。 - 将内存不足故障视为
FATAL读取 WAL 时。 - 修复
pg_dump了转储订阅的新run_as_owner选项。 - 修复
pg_restore,使选择性还原将包括所选表的表级和列级 ACL。 - 添加逻辑以
pg_upgrade检查是否使用了过时的数据类型abstime、reltime和tinterval。 - 修复
vacuumdb了多个-N开关实际上排除多个架构中的表的问题。 amcheck将不再将中断的页面删除报告为损坏。- 修复
btree_gin列上的interval索引,以便在使用<and<=运算符时正确返回数据。
更新
所有 PostgreSQL 更新版本都是累积的。与其他次要版本一样,用户无需转储和重装其数据库或使用 pg_upgrade 即可应用此更新版本;您可以简单地关闭 PostgreSQL 并更新其二进制文件。
我们建议您在应用此更新后重新索引某些类型的索引,包括:
- GiST 索引
- 使用
interval数据类型的 B 树索引 - 使用
date、timestamptz和timestamp数据类型以及 opsclass 的minmax_multiBRIN 索引
在 PostgreSQL 12 及更高版本上,您可以使用 REINDEX CONCURRENTLY 来避免阻止写入受影响的索引和表,例如:
REINDEX INDEX CONCURRENTLY your_index_name;
跳过一个或多个更新版本的用户可能需要运行其他更新后步骤;有关详细信息,请参阅早期版本的发行说明。
有关详细信息,请参阅发行说明。
链接
- 下载:https://www.postgresql.org/download/
- 发行说明:https://www.postgresql.org/docs/release/
- 安全:https://www.postgresql.org/support/security/
- 版本控制策略:https://www.postgresql.org/support/versioning/
- PostgreSQL 16 发布公告:https://www.postgresql.org/about/press/
文章来源:https://www.postgresql.org/about/news/postgresql-161-155-1410-1313-1217-and-1122-released-2749/




