PostgreSQL Global Development Group 已經發布了所有支援的 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
中的目標列加入到多個來源列,則會擲回錯誤。IS NOT
子句時,錯誤地刪除 NULL
分割區的問題。ALTER FOREIGN TABLE ... SET SCHEMA
將任何擁有的序列移動到新的綱要中。CREATE DATABASE
現在以不區分大小寫的方式識別 STRATEGY
關鍵字。VACUUM
進行了多項修復,其中包括一項可以減少不必要的 I/O 的修復。date_bin()
中不正確的捨入和溢位危險。initdb -c
現在以不區分大小寫的方式比對參數名稱。-- style comments
)。所有 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 公開的郵件列表。