PostgreSQL 全球开发组 发表于2023-11-09
PostgreSQL 项目安全性
PostgreSQL 全球开发组
发布了所有受支持的 PostgreSQL 版本的更新,包括 16.1、15.5、14.10、13.13、12.17 和 11.22 此版本修复了过去几个月报告的三个安全漏洞和超过 55 个错误。
此版本包括对索引的修复,在某些情况下,我们建议重新编制索引。有关详细信息,请参阅“更新”(https://www.postgresql.org/docs/release/)部分。
有关更改的完整列表,请查看发行说明。
PostgreSQL 11
EOL 通知
这是PostgreSQL 11 的最终版本。PostgreSQL 11 现已结束生命周期,将不再收到安全和错误修复。如果您在生产环境中运行 PostgreSQL 11,我们建议您计划升级到更新的受支持版本的PostgreSQL。有关详细信息,请参阅我们的版本控制策略(https://www.postgresql.org/support/versioning/)。
安全问题
CVE-2023-5868:聚合函数调用中的内存泄露
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_cancel_backend 可以向某些超级用户进程发出信号
CVSS v3 基本分数: 2.2
受支持的易受攻击版本:11 - 16。安全团队通常不会测试不受支持的版本,但这个问题由来已久。
文档称,该pg_cancel_backend 角色不能表示“超级用户拥有的后端”。相反,它可以向后台工作进程发出信号,包括逻辑复制启动器。它可以向autovacuum 工作进程(autovacuum workers)和 autovacuum启动进程(autovacuum launcher) 。
向autovacuum 工作进程和两个启动器进程不会提供有意义的漏洞利用,因此利用此漏洞需要具有弹性较差的后台工作进程的非核心扩展。例如,不自动重启的非核心后台工作进程将遇到与该特定后台工作进程相关的拒绝服务。
PostgreSQL 项目感谢 Hemanth Sandrana 和 Mahendrakar Srinivasarao报告此问题。
Bug 修复和改进
此更新修复了过去几个月中报告的超过 55 个错误。下面列出的问题会影响 PostgreSQL 16。其中一些问题还可能影响其他受支持的 PostgreSQL 版本。
² 修复了 GiST 索引在“页面拆分”操作期间出现错误行为的问题,该行为可能导致后续索引搜索中出现错误的结果。安装此更新后,请reindex GiST 索引。
² 修复了 B 树索引错误地删除 interval 重复列的问题。安装此更新后,请reindex任何包含 interval 列的 B 树索引。
² 使用 minmax_multi操作符类型时,在BRIN索引中提供更高效的 date 、 timestamptz 和 timestamp 值索引。虽然不是必需的,但我们建议在安装此更新后reindex包含这些数据类型的 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 语句的依赖关系,并在需要时重新规划它们。
² 读取 WAL 时将内存不足故障视为 FATAL 。
² 修复 pg_dump 转储订阅的run_as_owner 新选项。
² 修复 pg_restore使选择性还原将包括所选表的表级和列级 ACL。
² 添加逻辑以pg_upgrade 检查是否使用了过时的数据类型 abstime 、 reltime 和 tinterval 。
² 修复 vacuumdb 使用多个 -N 开关排除多个模式中表的问题。
² amcheck 不再将中断的页面删除报告为损坏。
² 修复 btree_gin 列上的 interval 索引,以便在使用 < 和 <= 运算符时正确返回数据。
更新
所有PostgreSQL 更新版本都是累积的。与其他次要版本一样,用户无需转储和重新加载其数据库或使用pg_upgrade
即可应用此更新版本;您可以简单地关闭 PostgreSQL 并更新其二进制文件。
我们建议您在应用此更新后reindexing某些类型的索引,包括:
² GiST索引
² 使用 interval 数据类型的 B 树索引
² 使用 date 、 timestamptz 和 timestamp 和操作符类型 minmax_multi的 BRIN 索引
在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/
²在推特上关注@postgresql:https://twitter.com/postgresql
²捐赠:https://www.postgresql.org/about/donate/
如果您对本发布公告有任何更正或建议,请将其发送到 pgsql-www@lists.postgresql.org 公共邮件列表。






