PostgreSQL 内置视图 pg_stats_ext 和 pg_stats_ext_exprs 中存在的授权缺失问题,允许未经授权的数据库用户读取其他用户通过 CREATE STATISTICS
命令创建的最常见值和其他统计信息。最常见的值可能会泄露窃听者无法读取的列值,或者泄露他们无法执行的函数的结果。仅安装不受影响的版本可以修复全新的 PostgreSQL 安装,即在安装该版本后使用 initdb 工具创建的安装。当前的 PostgreSQL 安装将继续存在漏洞,除非按照发行说明中的说明进行操作,发行说明在下方部分中提供。在 14-16 的主要版本中,PostgreSQL 16.3、15.7 和 14.12 之前的次要版本受到影响。PostgreSQL 14 之前的版本不受影响。
此修复程序仅修复全新的 PostgreSQL 安装,即在应用此修复程序后使用 initdb
工具创建的安装。如果您使用的是当前 PostgreSQL 安装并对此问题感到担忧,请按照以下补救步骤解决该问题。
在 PostgreSQL 安装的 share
目录中查找 SQL 脚本 fix-CVE-2024-4317.sql
(例如,在 /usr/share/postgresql/
中),或从下方的 PostgreSQL git 存储库 URL 下载。您需要使用与您的主版本匹配的脚本。
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”的链接下载可以复制粘贴的版本。
请确保使用适合您的 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;
PostgreSQL 项目感谢 Lukas Fittl 报告此问题。
受影响版本 | 已修复版本 | 修复发布日期 |
---|---|---|
16 | 16.3 | 2024 年 5 月 9 日 |
15 | 15.7 | 2024 年 5 月 9 日 |
14 | 14.12 | 2024 年 5 月 9 日 |
有关 PostgreSQL 版本信息 的更多信息,请访问 版本信息页面。
总体得分 | 3.1 |
---|---|
组件 | 核心服务器 |
向量 | AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:N/A:N |
如果您希望报告 PostgreSQL 中的新安全漏洞,请发送电子邮件至 security@postgresql.org。
如需报告非安全相关错误,请参阅 报告错误 页面。