PostgreSQL 全球開發團隊已發布針對所有支援的 PostgreSQL 版本的更新,包括 16.1、15.5、14.10、13.13、12.17 和 11.22。此版本修復了三個安全性漏洞以及過去幾個月中報告的 55 多個錯誤。
此版本包含針對索引的修復程式,在某些情況下,我們建議重新建立索引。 有關更多詳細資訊,請參閱「更新」部分。
有關更改的完整列表,請參閱版本說明。
這是 PostgreSQL 11 的最終版本。 PostgreSQL 11 現在已終止支援,將不再接收安全性和錯誤修復。 如果您在生產環境中執行 PostgreSQL 11,我們建議您計畫升級到較新、受支援的 PostgreSQL 版本。 有關更多信息,請參閱我們的版本控制策略。
CVSS v3 基礎分數:4.3
受影響且受支援的版本:11 - 16。 安全團隊通常不測試不受支援的版本,但此問題已存在很長時間。
接收「未知」類型參數的某些聚合函數呼叫可能會洩露伺服器記憶體的位元組,從「未知」類型值的末尾到下一個零位元組。 通常,可以透過沒有類型指定的字串文字取得「未知」類型的值。 我們尚未確認或排除攻擊的可行性,這些攻擊會安排在洩露的位元組中存在顯著的機密資訊。
PostgreSQL 專案感謝 Jingzhou Fu 報告此問題。
CVSS v3 基礎分數:8.8
受影響且受支援的版本:11 - 16。 安全團隊通常不測試不受支援的版本,但此問題已存在很長時間。
在修改某些 SQL 陣列值時,缺少溢位檢查讓已驗證的身分資料庫使用者將任意位元組寫入到一個記憶體區域,這會促進任意程式碼執行。 缺少溢位檢查也讓已驗證的身分資料庫使用者讀取廣泛的伺服器記憶體區域。 CVE-2021-32027 修復涵蓋了此描述的一些攻擊,但它遺漏了其他的攻擊。
PostgreSQL 專案感謝 Pedro Gallegos 報告此問題。
pg_signal_backend
可以對某些超級使用者處理程序發出訊號CVSS v3 基礎分數:2.2
受影響且受支援的版本:11 - 16。 安全團隊通常不測試不受支援的版本,但此問題已存在很長時間。
文件說明 pg_signal_backend
角色無法對「超級使用者擁有的後端」發出訊號。 相反地,它可以對背景工作者發出訊號,包括邏輯複寫啟動器。 它可以對 autovacuum
工作者和 autovacuum
啟動器發出訊號。 對 autovacuum
工作者和這兩個啟動器發出訊號不會提供有意義的攻擊,因此利用此漏洞需要一個具有較少彈性的背景工作者的非核心延伸模組。 例如,一個不會自動重新啟動的非核心背景工作者會遭受到相對於該特定背景工作者的阻斷服務。
PostgreSQL 專案感謝 Hemanth Sandrana 和 Mahendrakar Srinivasarao 報告此問題。
此更新修復了過去幾個月中報告的 55 多個錯誤。 下面列出的問題會影響 PostgreSQL 16。 這些問題中的一些也可能影響其他支援的 PostgreSQL 版本。
interval
欄位進行重複資料刪除的問題。 安裝此更新後,請重新建立索引包含 interval
欄位的任何 B 樹索引。minmax_multi
opsclass 時,提供對 BRIN 索引中 date
、timestamptz
和 timestamp
值的更有效率的索引。 雖然不是必需的,但我們建議在安裝此更新後重新建立索引包含這些資料類型的 BRIN 索引。如果將 pgrowlocks()
應用於分割資料表,則擲回正確的錯誤
修復了在使用 READ COMMITTED
模式時,在 MERGE
期間,並行更新的列的重新檢查不一致的問題。
UPDATE
/DELETE
/MERGE
中正確識別目標資料表。tsvector
的過度配置。ALTER SUBSCRIPTION
以套用 run_as_owner
選項中的變更。COPY FROM
的數個修復,pg_control
處理讀取撕裂的數個修復。ORDER BY
或 DISTINCT
選項的聚合函數時發生的「找不到要排序的路徑鍵項目」錯誤。track_io_timing
時,將關係擴充操作所花費的時間包括為寫入時間。CALL
陳述式的依賴性,並在需要時重新規劃它們。FATAL
。pg_dump
以傾印訂閱的新 run_as_owner
選項。pg_restore
,以便選擇性還原將包含所選資料表的資料表層級和欄位層級 ACL。pg_upgrade
以檢查是否使用了過時的資料類型 abstime
、reltime
和 tinterval
。vacuumdb
,以便多個 -N
切換確實排除多個結構描述中的資料表。amcheck
將不再報告中斷的頁面刪除為損毀。btree_gin
索引在 interval
欄位上,以便在使用 <
和 <=
運算子時正確傳回資料。所有 PostgreSQL 更新版本都是累積性的。 與其他次要版本一樣,使用者不需要傾印和重新載入其資料庫或使用 pg_upgrade
才能套用此更新版本; 您可以簡單地關閉 PostgreSQL 並更新其二進位檔。
我們建議在套用此更新後重新建立索引某些類型的索引,包括
interval
資料類型的 B 樹索引date
、timestamptz
和 timestamp
資料類型以及 minmax_multi
opsclass 的 BRIN 索引在 PostgreSQL 12 及以上版本,您可以使用 REINDEX CONCURRENTLY
來避免阻擋對受影響索引和資料表的寫入,例如:
REINDEX INDEX CONCURRENTLY your_index_name;
跳過一個或多個更新版本的用戶可能需要執行額外的更新後步驟;請參閱早期版本的發布說明以了解詳細資訊。
如需更多詳細資訊,請參閱發布說明。
如果您對此版本公告有任何更正或建議,請將其發送到 pgsql-www@lists.postgresql.org 公開的郵件列表。