PostgreSQL 全球开发组已发布对我们数据库系统所有受支持版本的更新,包括 13.3、12.7、11.12、10.17 和 9.6.22。此版本修复了三个安全漏洞,并修复了过去三个月报告的 45 多个错误。
有关更改的完整列表,请查看发行说明。
受影响的版本:9.6 - 13。安全团队通常不测试不受支持的版本,但这个问题由来已久。
在修改某些 SQL 数组值时,由于缺少边界检查,经过身份验证的数据库用户可以将任意字节写入服务器内存的广泛区域。
PostgreSQL 项目感谢 Tom Lane 报告此问题。
INSERT ... ON CONFLICT ... DO UPDATE
中的内存泄露受影响的版本:9.6 - 13。安全团队通常不测试不受支持的版本。此功能首次出现在 9.5 中。
通过在精心制作的表上使用 INSERT ... ON CONFLICT ... DO UPDATE
命令,攻击者可以读取服务器内存的任意字节。在默认配置中,任何经过身份验证的数据库用户都可以随意创建先决对象并完成此攻击。在所有数据库上缺少 CREATE
和 TEMPORARY
权限,以及在所有模式上缺少 CREATE
权限的用户不能随意使用此攻击。
PostgreSQL 项目感谢 Andres Freund 报告此问题。
UPDATE ... RETURNING
中的内存泄露受影响的版本:11 - 13
通过在精心制作的分区表上使用 UPDATE ... RETURNING
命令,攻击者可以读取服务器内存的任意字节。在默认配置中,任何经过身份验证的数据库用户都可以随意创建先决对象并完成此攻击。在所有数据库上缺少 CREATE
和 TEMPORARY
权限,以及在所有模式上缺少 CREATE
权限的用户通常不能随意使用此攻击。
PostgreSQL 项目感谢 Tom Lane 报告此问题。
此更新修复了过去几个月报告的 45 多个错误。其中一些问题仅影响版本 13,但也可能适用于其他受支持的版本。
其中一些修复包括
UPDATE ... RETURNING
输出的潜在不正确计算。ALTER TABLE ... ALTER CONSTRAINT
的问题。该命令将无法调整叶子分区的约束和触发器的 DEFERRABLE
和/或 INITIALLY DEFERRED
属性,从而导致意外行为。更新到此版本后,您可以执行 ALTER TABLE ... ALTER CONSTRAINT
命令来修复任何行为异常的分区表。ALTER TABLE ... INHERIT
附加子表时,父表中生成的列在子表中以相同的方式生成。NULL
。ALTER ROLE ... SET
/ALTER DATABASE ... SET
设置角色、session_authorization 和 temp_buffers 参数。AFTER
触发器中保存记录可能导致崩溃的问题。to_char()
如何处理带有负间隔的罗马数字月份格式代码。\{m,n\}
量词时使用未初始化值的问题。tsvector
索引搜索可能出现错误答案的问题。psql
上的 COMMIT AND CHAIN
功能。wal_sync_method
设置为 fdatasync
。vacuum_cleanup_index_scale_factor
参数和存储选项。\connect service=XYZ
的先前行为还原到 psql
,即禁止环境变量(例如 PGPORT
)覆盖服务文件中的条目。pg_dump
如何处理分区表中的生成列。pg_upgrade
添加其他检查。initdb
现在会打印有关如何使用反斜杠分隔符使用 pg_ctl
启动服务器的说明。pg_waldump
以在生成每条记录的统计信息时正确计数 XACT 记录。有关可用的更改的完整列表,请查看发行说明。
PostgreSQL 9.6 将于 2021 年 11 月 11 日停止接收修复。如果您在生产环境中运行 PostgreSQL 9.6,我们建议您制定计划升级到更新、受支持的 PostgreSQL 版本。有关详细信息,请参阅我们的版本策略。
所有 PostgreSQL 更新版本都是累积的。与其他次要版本一样,用户不需要转储和重新加载数据库或使用 pg_upgrade
来应用此更新版本;您可以简单地关闭 PostgreSQL 并更新其二进制文件。
跳过一个或多个更新版本的用户可能需要运行其他更新后步骤;有关详细信息,请参阅早期版本的发行说明。
有关更多详细信息,请参阅发行说明。