PostgreSQL 全球开发组发布了对所有受支持版本的 PostgreSQL 的更新,包括 14.3、13.7、12.11、11.16 和 10.21。此次发布修复了一个安全漏洞,并解决了过去三个月报告的 50 多个错误。
我们鼓励您尽快安装此更新。
如果您在使用了 ltree 数据类型的列上存在任何 GiST 索引,在升级后您将需要 重新索引 它们。
有关更改的完整列表,请参阅 发行说明。
PostgreSQL 10 将于 2022 年 11 月 10 日停止接收修复。如果您在生产环境中使用 PostgreSQL 10,我们建议您计划升级到更新的、受支持的 PostgreSQL 版本。有关更多信息,请参阅我们的 版本策略。
受影响版本:10 - 14。安全团队通常不测试不受支持的版本,但此问题已经存在很久了。
当特权用户维护其他用户的对象时,Autovacuum、REINDEX、CREATE INDEX、REFRESH MATERIALIZED VIEW、CLUSTER 和 pg_amcheck 在安全运行方面所做的努力并不完整。这些命令过晚或根本没有激活相关的保护措施。拥有至少在一个模式中创建非临时对象的权限的攻击者,可以以超级用户的身份执行任意 SQL 函数。
虽然及时更新 PostgreSQL 对大多数用户来说是最佳的修复措施,但无法这样做的用户可以通过禁用 autovacuum、不手动运行上述命令以及不从 pg_dump 命令的输出中恢复来规避此漏洞。在此规避措施下,性能可能会迅速下降。VACUUM 是安全的,当受信任的用户拥有目标对象时,所有命令都正常。
PostgreSQL 项目感谢 Alexander Lakhin 报告此问题。
此次更新修复了过去几个月报告的 50 多个错误。以下列出的问题影响 PostgreSQL 14。其中一些问题也可能影响 PostgreSQL 的其他受支持版本。
包含在此发布版本中
ltree 列上的 GiST 索引损坏的问题。升级后,您将需要 重新索引 任何在 ltree 列上的 GiST 索引。SELECT 列表的顶层之外的整个行变量(例如 tbl.*)生成的元组中的列名,始终与相关的命名复合类型(如果存在)的列名相关联。如果您依赖于之前的行为,请参阅 发布说明 中的解决方法。interval 类型提取 epoch 值时出现的错误舍入。pg_stat_get_replication_slot(NULL) 时出现问题。table_to_xmlschema() 中 timestamptz 和 timetz 类型的输出错误。SEARCH 或 CYCLE 功能的查询包含重复的公共表表达式(WITH)名称时出现的规划器故障。ALTER FUNCTION 以支持在同一命令中更改函数的并行属性及其 SET 变量列表。CLUSTER 对表达式作为前导键的索引进行操作时,表行排序不正确的问题。DROP TABLESPACE 和检查点之间的竞争条件,该条件可能导致未能从表空间目录中删除所有死文件。TRUNCATE 命令之后,崩溃恢复中可能出现的问题。_ 作为自定义配置参数名称的第一个字符。PANIC: xlog flush request is not satisfied 故障。max_sync_workers_per_subscription 限制时,逻辑复制应用工作进程可以重新启动。psql、pg_dump 和 pg_amcheck 中使用 database.schema.table 模式。pageinspect 进行多项修复,以提高整体稳定性。BEFORE INSERT ... FOR EACH ROW 触发器时,在 postgres_fdw 中禁用批量插入。此次更新还包含了 tzdata 版本 2022a,用于巴勒斯坦的 DST 法律变更,以及智利和乌克兰的历史修正。
有关所有更改的完整列表,请参阅 发布说明。
所有 PostgreSQL 更新版本都是累积的。与其他次要版本一样,用户不需要转储和重新加载数据库或使用 pg_upgrade 来应用此更新版本;您可以直接关闭 PostgreSQL 并更新其二进制文件。
但是,如果您在使用了 ltree 数据类型的列上存在任何 GiST 索引,在升级后您将需要 重新索引 它们。
跳过了一个或多个更新版本的用户可能需要执行额外的、更新后的步骤;有关详细信息,请参阅早期版本的发布说明。
有关更多详细信息,请参阅 发行说明。