PostgreSQL 全球開發團隊已發布資料庫系統所有支援版本的更新,包括 13.3、12.7、11.12、10.17 和 9.6.22。此版本修補了三個安全性漏洞,並修正了過去三個月內回報的 45 多個錯誤。
如需完整的變更列表,請參閱發布說明。
受影響的版本:9.6 - 13。安全團隊通常不會測試不受支援的版本,但這個問題已經存在很久了。
在修改某些 SQL 陣列值時,缺少邊界檢查允許通過身份驗證的資料庫使用者將任意位元組寫入到伺服器記憶體的廣大區域。
PostgreSQL 專案感謝 Tom Lane 回報此問題。
INSERT ... ON CONFLICT ... DO UPDATE
中的記憶體洩漏受影響的版本:9.6 - 13。安全團隊通常不會測試不受支援的版本。此功能首次出現在 9.5 版中。
在特製的表上使用 INSERT ... ON CONFLICT ... DO UPDATE
命令,攻擊者可以讀取伺服器記憶體的任意位元組。在預設配置中,任何通過身份驗證的資料庫使用者都可以隨意建立先決條件物件並完成此攻擊。在所有資料庫中缺少 CREATE
和 TEMPORARY
權限,且在所有模式中缺少 CREATE
權限的使用者通常無法隨意使用此攻擊。
PostgreSQL 專案感謝 Andres Freund 回報此問題。
UPDATE ... RETURNING
中的記憶體洩漏受影響的版本:11 - 13
在特製的分割表上使用 UPDATE ... RETURNING
,攻擊者可以讀取伺服器記憶體的任意位元組。在預設配置中,任何通過身份驗證的資料庫使用者都可以隨意建立先決條件物件並完成此攻擊。在所有資料庫中缺少 CREATE
和 TEMPORARY
權限,且在所有模式中缺少 CREATE
權限的使用者通常無法隨意使用此攻擊。
PostgreSQL 專案感謝 Tom Lane 回報此問題。
此更新修正了過去幾個月內回報的 45 多個錯誤。其中一些問題僅影響 13 版,但也可能適用於其他支援的版本。
其中一些修復包括:
UPDATE ... RETURNING
輸出的潛在錯誤計算。ALTER TABLE ... ALTER CONSTRAINT
的問題。該命令無法調整葉子分割區約束和觸發器的 DEFERRABLE
和/或 INITIALLY DEFERRED
屬性,導致意外行為。更新到此版本後,您可以執行 ALTER TABLE ... ALTER CONSTRAINT
命令來修正任何行為不端的分割表。ALTER TABLE ... INHERIT
附加子表時,父表中的產生欄在子表中以相同的方式產生。NULL
。ALTER ROLE ... SET
/ALTER DATABASE ... SET
設定 role、session_authorization 和 temp_buffers 參數。AFTER
觸發器中儲存記錄可能導致崩潰的問題。to_char()
如何處理帶有負間隔的羅馬數字月份格式代碼。\{m,n\}
量詞時使用的未初始化值。tsvector
索引搜尋的潛在錯誤答案。psql
上的 COMMIT AND CHAIN
功能。wal_sync_method
設定為 fdatasync
。vacuum_cleanup_index_scale_factor
參數和儲存選項。\connect service=XYZ
還原到 psql
的先前行為,即不允許環境變數(例如 PGPORT
)覆蓋服務檔案中的條目。pg_dump
如何處理分割表中的產生欄。pg_upgrade
的其他檢查。initdb
現在列印有關如何使用反斜線分隔符號使用 pg_ctl
啟動伺服器的說明。pg_waldump
以在產生每條記錄的統計資訊時正確計算 XACT 記錄。如需完整的可用變更列表,請參閱發布說明。
PostgreSQL 9.6 將於 2021 年 11 月 11 日停止接收修復。如果您在生產環境中執行 PostgreSQL 9.6,我們建議您制定計劃升級到更新、受支援的 PostgreSQL 版本。請參閱我們的版本控制策略以獲取更多資訊。
所有 PostgreSQL 更新版本都是累積的。與其他小版本一樣,使用者無需傾印和重新載入其資料庫或使用 pg_upgrade
即可應用此更新版本;您可以簡單地關閉 PostgreSQL 並更新其二進位檔案。
跳過一個或多個更新版本的用戶可能需要執行額外的更新後步驟;請參閱早期版本的發布說明以了解詳細資訊。
如需更多詳細資訊,請參閱發布說明。