PostgreSQL 13.3、12.7、11.12、10.17 和 9.6.22 版本已發布!

發布於 2021-05-13,作者為 PostgreSQL 全球開發團隊
PostgreSQL 專案 安全性

PostgreSQL 全球開發團隊已發布資料庫系統所有支援版本的更新,包括 13.3、12.7、11.12、10.17 和 9.6.22。此版本修補了三個安全性漏洞,並修正了過去三個月內回報的 45 多個錯誤。

如需完整的變更列表,請參閱發布說明

安全性問題

CVE-2021-32027:陣列下標計算中的整數溢位導致的緩衝區溢位

受影響的版本:9.6 - 13。安全團隊通常不會測試不受支援的版本,但這個問題已經存在很久了。

在修改某些 SQL 陣列值時,缺少邊界檢查允許通過身份驗證的資料庫使用者將任意位元組寫入到伺服器記憶體的廣大區域。

PostgreSQL 專案感謝 Tom Lane 回報此問題。

CVE-2021-32028INSERT ... ON CONFLICT ... DO UPDATE 中的記憶體洩漏

受影響的版本:9.6 - 13。安全團隊通常不會測試不受支援的版本。此功能首次出現在 9.5 版中。

在特製的表上使用 INSERT ... ON CONFLICT ... DO UPDATE 命令,攻擊者可以讀取伺服器記憶體的任意位元組。在預設配置中,任何通過身份驗證的資料庫使用者都可以隨意建立先決條件物件並完成此攻擊。在所有資料庫中缺少 CREATETEMPORARY 權限,且在所有模式中缺少 CREATE 權限的使用者通常無法隨意使用此攻擊。

PostgreSQL 專案感謝 Andres Freund 回報此問題。

CVE-2021-32029:分割表 UPDATE ... RETURNING 中的記憶體洩漏

受影響的版本:11 - 13

在特製的分割表上使用 UPDATE ... RETURNING,攻擊者可以讀取伺服器記憶體的任意位元組。在預設配置中,任何通過身份驗證的資料庫使用者都可以隨意建立先決條件物件並完成此攻擊。在所有資料庫中缺少 CREATETEMPORARY 權限,且在所有模式中缺少 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 參數。
  • 確保 REINDEX CONCURRENTLY 保留為索引設定的任何統計目標。
  • 修正了在某些情況下,在 AFTER 觸發器中儲存記錄可能導致崩潰的問題。
  • 修正 to_char() 如何處理帶有負間隔的羅馬數字月份格式代碼。
  • 修正解析 BRE 模式正規表示式中 \{m,n\} 量詞時使用的未初始化值。
  • 修正排序鍵涉及聚合或窗口函數時在某些情況下發生的「找不到路徑鍵項目進行排序」規劃器錯誤。
  • 修正可能導致「無法開啟檔案」錯誤的 BRIN 索引位圖掃描問題。
  • 修復當有許多匹配記錄時,GIN tsvector 索引搜尋的潛在錯誤答案。
  • 修復伺服器和 psql 上的 COMMIT AND CHAIN 功能。
  • 避免從 WAL 恢復未提交的兩階段交易時發生錯誤的時間軸變更,這可能導致一致性問題和無法重新啟動伺服器。
  • 確保在較新的 FreeBSD 版本上預設將 wal_sync_method 設定為 fdatasync
  • 停用 vacuum_cleanup_index_scale_factor 參數和儲存選項。
  • 修正伺服器中的幾個記憶體洩漏,包括 SSL/TLS 參數初始化中的一個。
  • \connect service=XYZ 還原到 psql 的先前行為,即不允許環境變數(例如 PGPORT)覆蓋服務檔案中的條目。
  • 修正 pg_dump 如何處理分割表中的產生欄。
  • 為包含不可升級資料類型的使用者表添加對 pg_upgrade 的其他檢查。
  • 在 Windows 上,initdb 現在列印有關如何使用反斜線分隔符號使用 pg_ctl 啟動伺服器的說明。
  • 修正 pg_waldump 以在產生每條記錄的統計資訊時正確計算 XACT 記錄。

如需完整的可用變更列表,請參閱發布說明

PostgreSQL 9.6 EOL 通知

PostgreSQL 9.6 將於 2021 年 11 月 11 日停止接收修復。如果您在生產環境中執行 PostgreSQL 9.6,我們建議您制定計劃升級到更新、受支援的 PostgreSQL 版本。請參閱我們的版本控制策略以獲取更多資訊。

更新

所有 PostgreSQL 更新版本都是累積的。與其他小版本一樣,使用者無需傾印和重新載入其資料庫或使用 pg_upgrade 即可應用此更新版本;您可以簡單地關閉 PostgreSQL 並更新其二進位檔案。

跳過一個或多個更新版本的用戶可能需要執行額外的更新後步驟;請參閱早期版本的發布說明以了解詳細資訊。

如需更多詳細資訊,請參閱發布說明

連結