PostgreSQL 14.3、13.7、12.11、11.16 和 10.21 已發布!

發布於 2022-05-12,由 PostgreSQL Global Development Group 發布
PostgreSQL 專案 安全性

PostgreSQL Global Development Group 發布了 PostgreSQL 所有受支援版本的更新,包括 14.3、13.7、12.11、11.16 和 10.21。 此版本修補了一個安全性漏洞,並修正了過去三個月回報的 50 多個錯誤。

我們建議您盡早安裝此更新。

如果您在使用了 ltree 資料類型的欄位上有任何 GiST 索引,則需要在升級後 重建索引

有關完整的變更列表,請參閱發布說明

PostgreSQL 10 終止支援通知

PostgreSQL 10 將於 2022 年 11 月 10 日停止接收修補程式。如果您在生產環境中執行 PostgreSQL 10,我們建議您規劃升級到更新、受支援的 PostgreSQL 版本。 請參閱我們的 版本政策 以取得更多資訊。

安全性問題

CVE-2022-1552:Autovacuum、REINDEX 和其他指令省略了「安全性限制操作」沙箱。

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

當具備權限的使用者維護其他使用者的物件時,Autovacuum、REINDEXCREATE INDEXREFRESH MATERIALIZED VIEWCLUSTERpg_amcheck 在安全操作方面做得不夠完善。 這些指令啟動相關保護的時間太晚或根本沒有啟動。 攻擊者如果擁有在至少一個綱要中建立非暫時性物件的權限,則可以使用超級使用者身分執行任意 SQL 函數。

雖然迅速更新 PostgreSQL 是大多數使用者最佳的修補方式,但無法這樣做的使用者可以透過停用 autovacuum、不手動執行上述指令,以及不從 pg_dump 指令的輸出還原來規避此漏洞。 在這種變通方法下,效能可能會快速下降。 VACUUM 是安全的,並且當受信任的使用者擁有目標物件時,所有指令都可以正常執行。

PostgreSQL 專案感謝 Alexander Lakhin 回報此問題。

錯誤修正和改進

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

包含在此版本中

  • 修正了可能導致 ltree 欄位上 GiST 索引損毀的問題。 升級後,您需要重建索引任何 ltree 欄位上的 GiST 索引。
  • 由全行變數(例如, tbl.*)產生的元組中的欄位名稱,如果存在相關的命名複合類型,則在 SELECT 列表的頂層之外,現在始終與這些命名複合類型的欄位名稱相關聯。 如果您依賴之前的行為,發布說明 中詳細說明了一種變通方法。
  • 修正從 interval 類型提取 epoch 值時的不正確捨入問題。
  • 防止呼叫 pg_stat_get_replication_slot(NULL) 時出現問題。
  • 修正 table_to_xmlschema()timestamptztimetz 類型的不正確輸出。
  • 修正與影響非同步遠端查詢的查詢規劃器問題相關的錯誤。
  • 修正了如果使用 SEARCHCYCLE 功能的查詢包含重複的 common-table expression (WITH) 名稱,則規劃器會失敗的問題。
  • 修正 ALTER FUNCTION 以支援在同一指令中變更函數的並行屬性和其 SET 變數列表。
  • 修正了在使用 CLUSTER 在索引上排序表格列時,索引的前導鍵是一個表達式時,排序不正確的問題。
  • 防止在排序後的 GiST 索引建立後不久發生系統崩潰時的資料遺失。
  • 修正刪除分割索引時發生死鎖失敗的風險。
  • 修正了 DROP TABLESPACE 和檢查點之間可能導致無法從 tablespace 目錄中移除所有已刪除檔案的競爭條件。
  • 修正在 TRUNCATE 指令與檢查點重疊後,在崩潰復原中可能發生的問題。
  • 重新允許 _ 作為自訂組態參數名稱的第一個字元。
  • 修正了當缺少 WAL 繼續記錄時,備用升級期間發生的 PANIC: xlog flush request is not satisfied 錯誤。
  • 修正在熱備用衝突處理中可能發生的自我死鎖。
  • 確保當伺服器接近 max_sync_workers_per_subscription 限制時,可以重新啟動邏輯複製應用程式 worker。
  • 禁止在 PL/Perl 函數編譯期間執行 SPI 函數。
  • libpq 現在接受 root 擁有的 SSL 私鑰檔案,這與伺服器自 9.6 版本以來使用的規則相符。
  • 重新允許在 psqlpg_dumppg_amcheck 中使用 database.schema.table 模式。
  • 針對 pageinspect 進行了多項修正,以提高整體穩定性。
  • 當 foreign table 上存在 BEFORE INSERT ... FOR EACH ROW 觸發程序時,停用 postgres_fdw 中的批次插入。
  • 更新 JIT 程式碼以與 LLVM 14 搭配使用。

此更新還包含 tzdata 版本 2022a,用於巴勒斯坦的 DST 法規變更,以及智利和烏克蘭的歷史更正。

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

更新

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

但是,如果您在使用了 ltree 資料類型的欄位上有任何 GiST 索引,則需要在升級後 重建索引

跳過一個或多個更新版本的使用者可能需要執行其他更新後步驟; 請參閱先前版本的發布說明以了解詳細資訊。

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

連結