PostgreSQL 全球開發組釋出了對所有受支援的 PostgreSQL 版本(包括 16.3、15.7、14.12、13.15 和 12.19)的更新。此版本修復了一個安全漏洞和過去幾個月報告的 55 個以上錯誤。
在系統檢視 pg_stats_ext 和 pg_stats_ext_exprs 中發現了一個安全漏洞,可能允許已認證的資料庫使用者檢視他們沒有足夠許可權檢視的資料。此漏洞的修復僅適用於新安裝的 PostgreSQL,即在此修復應用後使用 initdb 工具建立的 PostgreSQL。如果您當前安裝了 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 並擔心此問題,請遵循“更新”部分中的說明進行補救。
PostgreSQL 專案感謝 Lukas Fittl 報告此問題。
本次更新修復了過去幾個月報告的 55 個以上錯誤。以下列出的問題會影響 PostgreSQL 16。其中一些問題也可能影響 PostgreSQL 的其他受支援版本。
VALUES 子句的 INSERT 語句時出現的問題,其中目標列是陣列或複合型別的域。MERGE 和 MERGE ... DO NOTHING 時,需要對目標表具有 SELECT 許可權。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 公共 郵件列表。