PostgreSQL 全球开发组已发布所有受支持的 PostgreSQL 版本(包括 16.3、15.7、14.12、13.15 和 12.19)的更新。此版本修复了一个安全漏洞以及过去几个月报告的 55 多个错误。
在系统视图 pg_stats_ext
和 pg_stats_ext_exprs
中发现了一个安全漏洞,这可能会允许经过身份验证的数据库用户查看他们没有足够权限查看的数据。此漏洞的修复仅修复新的 PostgreSQL 安装,即在应用此修复后使用 initdb
实用程序创建的安装。如果您有当前的 PostgreSQL 安装并且担心此问题,请按照“更新”部分中的说明进行补救。
有关更改的完整列表,请查看发行说明。
PostgreSQL 12 将于 2024 年 11 月 14 日停止接收修复。如果您在生产环境中运行 PostgreSQL 12,我们建议您制定计划升级到较新、受支持的 PostgreSQL 版本。有关更多信息,请参阅我们的版本控制策略。
pg_stats_ext
和 pg_stats_ext_exprs
条目的可见性,仅限表所有者可见CVSS v3.1 基本评分:3.1
受支持的易受攻击的版本:14 - 16。
PostgreSQL 内置视图 pg_stats_ext
和 pg_stats_ext_exprs
中缺少授权,允许无特权的数据库用户读取其他用户的 CREATE STATISTICS
命令中最常用的值和其他统计信息。最常用的值可能会泄露窃听者无法读取的列值或他们无法执行的函数的结果。
此修复仅修复新的 PostgreSQL 安装,即在应用此修复后使用 initdb
实用程序创建的安装。如果您有当前的 PostgreSQL 安装并且担心此问题,请按照“更新”部分中的说明进行补救。
PostgreSQL 项目感谢 Lukas Fittl 报告此问题。
此更新修复了过去几个月报告的 55 多个错误。下面列出的问题会影响 PostgreSQL 16。其中一些问题也可能会影响其他受支持的 PostgreSQL 版本。
VALUES
子句的 INSERT
问题,其中目标列是数组或复合类型的域。MERGE ... DO NOTHING
时,需要目标表上的 SELECT 权限才能使用 MERGE
。MERGE
中的目标行在修改期间连接到多个源行,则会引发错误。IS NOT
子句时错误地修剪 NULL
分区的问题。ALTER FOREIGN TABLE ... SET SCHEMA
将任何拥有的序列移动到新的模式中。CREATE DATABASE
现在以不区分大小写的方式识别 STRATEGY
关键字。VACUUM
的几个问题,包括一个可以减少不必要的 I/O 的问题。date_bin()
中的不正确舍入和溢出风险。initdb -c
现在以不区分大小写的方式匹配参数名称。-- 样式注释
)。所有 PostgreSQL 更新版本都是累积的。与其他次要版本一样,用户不需要转储和重新加载数据库或使用 pg_upgrade
来应用此更新版本;您只需关闭 PostgreSQL 并更新其二进制文件即可。
对于受 CVE-2024-4317 影响并希望补救该问题的现有安装,您将必须执行以下步骤
在 PostgreSQL 安装的 share
目录(例如,在 /usr/share/postgresql/
中)查找 SQL 脚本 fix-CVE-2024-4317.sql
,或从以下 URL 之一的 PostgreSQL git 存储库下载它。您需要使用与您的主要版本匹配的脚本
PostgreSQL 16:https://git.postgresql.org/gitweb/?p=postgresql.git;a=blob;f=src/backend/catalog/fix-CVE-2024-4317.sql;hb=refs/heads/REL_16_STABLE
从上面的 URL 中,您可以单击显示“raw”的 URL 以下载您可以复制和粘贴的版本。
请务必使用适合您的 PostgreSQL 主要版本的脚本。如果您没有看到此文件,则表示您的版本没有漏洞(仅 PostgreSQL 14、15 和 16 受影响)或您的次要版本太旧而没有修复。
fix-CVE-2024-4317.sql
脚本。例如,在 psql
中,如果该文件位于 /usr/share/postgresql/
中,则此命令如下所示\i /usr/share/postgresql/fix-CVE-2024-4317.sql
template0
和 template1
数据库中执行此脚本,否则您稍后创建的数据库中仍将存在该漏洞。要修复 template0
,您需要临时允许它接受连接。您可以使用以下命令执行此操作ALTER DATABASE template0 WITH ALLOW_CONNECTIONS true;
在 template0
和 template1
中执行 fix-CVE-2024-4317.sql
脚本后,您应该撤销 template0
接受连接的能力。您可以使用以下命令执行此操作
ALTER DATABASE template0 WITH ALLOW_CONNECTIONS false;
跳过一个或多个更新版本的用户可能需要运行其他更新后步骤;请参阅早期版本的发行说明以了解详细信息。
有关更多详细信息,请参阅发行说明。
如果您对此版本公告有更正或建议,请将其发送到 pgsql-www@lists.postgresql.org 公开邮件列表。