2025年9月25日: PostgreSQL 18 釋出!

CVE-2024-4317

限制 "pg_stats_ext" 和 "pg_stats_ext_exprs" 條目對錶的可見性,僅限於表所有者

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 安裝並對此問題感到擔憂,請按照以下補救步驟解決該問題。

  1. 在 PostgreSQL 安裝的 share 目錄中查詢 SQL 指令碼 fix-CVE-2024-4317.sql(例如,在 /usr/share/postgresql/ 中),或從下方的 PostgreSQL git 儲存庫 URL 下載。您需要使用與您的主版本匹配的指令碼。

  2. 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

  3. PostgreSQL 15: https://git.postgresql.org/gitweb/?p=postgresql.git;a=blob;f=src/backend/catalog/fix-CVE-2024-4317.sql;hb=refs/heads/REL_15_STABLE
  4. PostgreSQL 14: https://git.postgresql.org/gitweb/?p=postgresql.git;a=blob;f=src/backend/catalog/fix-CVE-2024-4317.sql;hb=refs/heads/REL_14_STABLE

從上面的 URL,您可以點選顯示“raw”的連結下載可以複製貼上的版本。

請確保使用適合您的 PostgreSQL 主版本的指令碼。如果您沒有看到此檔案,則表示您的版本不受影響(僅 PostgreSQL 14、15 和 16 受影響),或者您的次要版本太舊而未包含此修復程式。

  1. 在叢集的每個資料庫中,以資料庫超級使用者的身份執行 fix-CVE-2024-4317.sql 指令碼。例如,在 psql 中,如果檔案位於 /usr/share/postgresql/,則此命令將如下所示:

\i /usr/share/postgresql/fix-CVE-2024-4317.sql

  1. 您還必須在 template0template1 資料庫中執行此指令碼,否則您以後建立的資料庫將仍然存在漏洞。要修復 template0,您需要暫時允許它接受連線。您可以使用以下命令執行此操作:

ALTER DATABASE template0 WITH ALLOW_CONNECTIONS true;

template0template1 中執行 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 版本資訊 的更多資訊,請訪問 版本資訊頁面

CVSS 3.0

總體得分 3.1
元件 核心伺服器
向量 AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:N/A:N

報告安全漏洞

如果您希望報告 PostgreSQL 中的新安全漏洞,請傳送電子郵件至 security@postgresql.org

如需報告非安全相關錯誤,請參閱 報告錯誤 頁面。