2025年9月25日: PostgreSQL 18 釋出!

釋出 PostgreSQL 14.1、13.5、12.9、11.14、10.19 和 9.6.24!

釋出於 2021-11-11,作者 PostgreSQL Global Development Group
PostgreSQL 專案 安全

PostgreSQL Global Development Group 釋出了其資料庫系統所有受支援版本的更新,包括 14.1、13.5、12.9、11.14、10.19 和 9.6.24。此次釋出修復了兩個安全漏洞,並解決了過去三個月報告的 40 多個錯誤。

此外,這是 **PostgreSQL 9.6 的最終釋出版本**。如果您在生產環境中使用 PostgreSQL 9.6,我們建議您制定升級計劃。

有關更改的完整列表,請參閱 發行說明

安全問題

CVE-2021-23214:伺服器處理中間人攻擊的未加密位元組

受影響的版本:9.6 - 14。安全團隊通常不測試不受支援的版本,但此問題存在已久。

當伺服器配置為使用 trust 認證,同時要求 clientcert,或者使用 cert 認證時,中間人攻擊者可以在連線首次建立時注入任意 SQL 查詢,即使使用了 SSL 證書驗證和加密。

PostgreSQL 專案感謝 Jacob Champion 報告此問題。

CVE-2021-23222:libpq 處理中間人攻擊的未加密位元組

受影響的版本:9.6 - 14。安全團隊通常不測試不受支援的版本,但此問題存在已久。

中間人攻擊者可以在 SSL 證書驗證和加密的情況下,向客戶端的最初幾次查詢注入虛假響應。

如果滿足更多先決條件,攻擊者可以竊取客戶端的密碼或其他在會話早期傳輸的機密資料。攻擊者必須能夠讓客戶端的目標伺服器將機密資料暴露給攻擊者。已知具有此屬性的實現是易受 CVE-2021-23214 攻擊的 PostgreSQL 配置。

與任何對 CVE-2021-23214 的攻擊一樣,伺服器必須使用 trust 認證並要求 clientcert,或者使用 cert 認證。要洩露密碼,客戶端必須擁有密碼,這在使用易受 CVE-2021-23214 攻擊的認證配置時並不常見。攻擊者必須有其他方法訪問伺服器才能檢索竊取的資料(一個有效的、非特權登入賬戶就足夠了)。

PostgreSQL 專案感謝 Jacob Champion 報告此問題。

錯誤修復和改進

此次更新修復了過去幾個月報告的 40 多個錯誤。下面列出的問題會影響 PostgreSQL 14。其中一些問題也可能影響 PostgreSQL 的其他受支援版本。

部分修復包括:

  • 修復了主伺服器在傳送完包含部分 WAL 記錄的 WAL 段後崩潰時的物理複製問題。在應用此次更新時,請先更新您的備用伺服器,以便在主伺服器發生崩潰時,它們能夠準備好處理此修復。
  • 修復了並行 VACUUM,使其能夠處理低於 min_parallel_index_scan_size 閾值的索引,前提是該表至少有兩個大於該閾值的索引。此問題不影響 autovacuum。如果您受到此問題的影響,應重新索引任何手動 vacuum 過的表。
  • 修復了導致 CREATE INDEX CONCURRENTLYREINDEX CONCURRENTLY 寫入損壞索引的原因。您應重新索引任何併發建立的索引。
  • 修復了附加/分離分割槽時可能導致某些 INSERT/UPDATE 查詢在活動會話中行為異常的問題。
  • 修復了使用 CREATE TYPE 建立新範圍型別時可能導致後續事件觸發器或 CREATE TYPE 命令後續執行出現問題的情況。
  • 修復了複合型別中包含的域的陣列元素欄位的更新問題。
  • 禁止組合使用 FETCH FIRST WITH TIESFOR UPDATE SKIP LOCKED
  • 修復了數值 power() 函式中的一個邊界情況精度丟失問題。
  • 修復了子事務中 Portal 快照恢復可能導致崩潰的問題。例如,在 PL/pgSQL 中,當 COMMIT 緊隨一個執行查詢的 BEGIN ... EXCEPTION 塊時,可能會發生這種情況。
  • 當事務在匯出快照後失敗時,能夠正確清理。這可能發生在建立了一個複製槽然後回滾,之後在同一會話中建立了另一個複製槽的情況下。
  • 修復了備用伺服器上的“溢位子事務”迴繞跟蹤問題,該問題可能導致效能下降。
  • 確保在備用伺服器升級為主伺服器的過程中,對預備事務進行正確統計。
  • 在重命名錶時,確保使用正確的鎖定級別。
  • 避免在刪除擁有正在併發刪除的物件角色的情況下發生崩潰。
  • shared_memory_typesysv 時,禁止將 huge_pages 設定為 on。
  • 修復了 PL/pgSQL 中的 RETURN QUERY 的查詢型別檢查。
  • pg_dump 進行了多項修復,包括正確轉儲非全域性預設許可權的能力。
  • 使用 CLDR 專案的資料將 Windows 時區名稱對映到 IANA 時區。

此次更新還包含了 tzdata 2021e 版本,以應對斐濟、約旦、巴勒斯坦和薩摩亞的夏令時(DST)法律變更,以及巴貝多、庫克群島、蓋亞那、紐埃、葡萄牙和湯加的歷史性修正。

此外,Pacific/Enderbury 時區已重新命名為 Pacific/Kanton。同時,以下時區已合併到附近人口更多、自 1970 年以來時鐘與其一致的時區中:Africa/Accra、America/Atikokan、America/Blanc-Sablon、America/Creston、America/Curacao、America/Nassau、America/Port_of_Spain、Antarctica/DumontDUrville 和 Antarctica/Syowa。在所有這些情況下,之前的時區名稱仍保留為別名。

有關所有更改的完整列表,請參閱 釋出說明

PostgreSQL 9.6 已結束生命週期 (EOL)

這是 PostgreSQL 9.6 的最終釋出版本。如果您在生產環境中使用 PostgreSQL 9.6,我們建議您制定升級計劃,遷移到更新的、受支援的 PostgreSQL 版本。請參閱我們的 版本策略 以獲取更多資訊。

更新

所有 PostgreSQL 更新版本都是累積的。與其他次要版本一樣,使用者不需要轉儲和重新載入資料庫或使用 pg_upgrade 來應用此更新版本;您可以直接關閉 PostgreSQL 並更新其二進位制檔案。

跳過了一個或多個更新版本的使用者可能需要執行額外的、更新後的步驟;有關詳細資訊,請參閱早期版本的釋出說明。

有關更多詳細資訊,請參閱 發行說明

連結