PostgreSQL 14.5、13.8、12.12、11.17、10.22 和 15 Beta 3 已發布!

張貼於 2022-08-11,作者:PostgreSQL 全球開發團隊
PostgreSQL 專案 安全性

PostgreSQL 全球開發團隊已發布 PostgreSQL 所有受支援版本的更新,包括 14.5、13.8、12.12、11.17 和 10.22,以及 PostgreSQL 15 的第三個 Beta 版本。 此版本修補了一個安全性漏洞,並修復了過去三個月報告的 40 多個錯誤。

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

PostgreSQL 10 即將終止支援 (EOL)

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

安全性問題

CVE-2022-2625:擴充套件腳本替換不屬於該擴充套件的物件。

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

某些擴充套件使用 CREATE OR REPLACECREATE IF NOT EXISTS 指令。 然而,有些不遵守僅針對已知是擴充套件成員的物件的已記錄規則。 攻擊需要權限才能在至少一個綱要中建立非暫時物件、誘使或等待管理員在該綱要中建立或更新受影響的擴充套件的能力,以及誘使或等待受害者使用 CREATE OR REPLACECREATE IF NOT EXISTS 中針對的物件的能力。

考慮到所有三個先決條件,攻擊者可以以受害者角色執行任意程式碼,這可能是超級使用者。 已知受影響的擴充套件包括 PostgreSQL 捆綁和非捆綁擴充套件。 PostgreSQL 在核心伺服器中阻止了這次攻擊,因此無需修改個別擴充套件。

PostgreSQL 專案感謝 Sven Klemm 報告此問題。

關於 PostgreSQL 15 Beta 的說明

此版本標誌著 PostgreSQL 15 的第三個 Beta 版本,並使社群更接近暫定於第三季末的一般可用性。

本著開源 PostgreSQL 社群的精神,我們強烈建議您在您的系統上測試 PostgreSQL 15 的新功能,以幫助我們消除可能存在的錯誤或其他問題。 雖然我們不建議您在生產環境中執行 PostgreSQL 15 Beta 3,但我們鼓勵您尋找方法針對此 Beta 版本執行您典型的應用程式工作負載。

您的測試和回饋將幫助社群確保 PostgreSQL 15 堅持我們交付世界上最先進的開源關聯式資料庫的穩定、可靠版本的標準。 請閱讀更多關於我們的Beta 測試流程以及您如何做出貢獻

https://postgres.tw/developer/beta/

您可以在發布說明中找到有關所有 PostgreSQL 15 功能和變更的資訊

https://postgres.tw/docs/15/release-15.html

錯誤修復和改進

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

包含在此版本中

  • 修復在遇到遺失的表空間目錄時,在備用伺服器上重播 CREATE DATABASE 預寫式日誌 (WAL) 記錄。
  • 新增對表空間的支援,這些表空間是純目錄而不是其他目錄的符號連結。
  • 修復 CREATE INDEX 中的權限檢查以使用使用者的權限。 這修復了依賴於修復 CVE-2022-1552 之前的行為的損壞的轉儲/還原情境。
  • 在擴充查詢協定中,在 CREATE DATABASE 和其他無法在交易區塊中執行的指令之後,強制立即提交。
  • 修復圍繞檢查交易可見性的競爭條件,在使用同步複製時更有可能發生。
  • 修復擴充統計資訊的不正確權限檢查程式碼。
  • 修復擴充統計資訊機制以處理布林值表示式上的最常見值 (MCV) 類型的統計資訊。
  • array 變數上存在 MCV 類型擴充統計資訊時,避免具有常數 = ANY(array) 子句的規劃器核心轉儲。
  • 允許在計算擴充統計資訊時取消 ANALYZE
  • 修復 ALTER TABLE ... ENABLE/DISABLE TRIGGER 以處理分割表格上觸發程序的遞迴。
  • 拒絕 FROM 中具有超過 1600 個欄位的 ROW() 表示式和函式。
  • 修復邏輯複製訂閱者中的記憶體洩漏。
  • 修復目標表格已分割時,邏輯複製複本身分的檢查。
  • 安排在 SPI_commit() 中 commit-time 錯誤後進行清理,而不是期望呼叫者執行此操作。 這包括修復 PL/Python 中的相同情境,該情境報告了 Python 3.11 上的崩潰和舊版 Python 3 上的記憶體洩漏。
  • 改善 libpq管線模式中閒置狀態的處理。
  • psql \watch 指令中,在使用 control-C 取消後,回應換行符號。
  • 修復 pg_upgrade 以偵測接受 anyarray 參數的函式的不可升級用法。
  • 多個 postgres_fdw 修復,包括在存在 WITH CHECK OPTION 限制時防止批次插入。

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

更新

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

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

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

更新至 PostgreSQL 15 Beta 3

若要從 Beta 2、Beta 1 或更早版本的 PostgreSQL 升級至 PostgreSQL 15 Beta 3,您需要使用類似於 PostgreSQL 主要版本之間升級的策略 (例如 pg_upgradepg_dump / pg_restore)。有關更多資訊,請訪問關於升級的文件章節。

測試錯誤與相容性

每個 PostgreSQL 版本的穩定性在很大程度上取決於您,社群,透過使用您的工作負載和測試工具來測試即將到來的版本,以便在 PostgreSQL 15 正式發布之前找到錯誤和迴歸。由於這是一個 Beta 版本,因此資料庫行為、功能細節和 API 仍然有可能發生變更。您的回饋和測試將有助於確定新功能的最終調整,因此請在近期進行測試。使用者測試的品質有助於確定我們何時可以進行最終版本發布。

在 PostgreSQL wiki 中可以公開取得一份未解決問題的列表。您可以使用 PostgreSQL 網站上的此表格回報錯誤

https://postgres.tw/account/submitbug/

連結