PostgreSQL 11.4、10.9、9.6.14、9.5.18、9.4.23 及 12 Beta 2 已發布!

發布於 2019-06-20 ,作者:PostgreSQL 全球開發團隊
PostgreSQL 專案 安全性

PostgreSQL 全球開發團隊已發布了對我們資料庫系統所有支援版本的更新,包括 11.4、10.9、9.6.14、9.5.18 和 9.4.23,以及 PostgreSQL 12 的第二個 Beta 版本。 此版本修復了一個安全性問題和自 5 月份上次累計更新以來的 25 多個錯誤。

此版本是在正常更新發布時間表之外發布的,因為安全性漏洞被認為非常嚴重,需要盡快發布修復程式。 執行 PostgreSQL 10、PostgreSQL 11 或 PostgreSQL 12 Beta 的使用者應盡快升級。

所有其他使用者應計畫在下次排定的停機時間套用此更新。

安全性問題

此版本修補了一個安全性漏洞

  • CVE-2019-10164:透過設定密碼的堆疊型緩衝區溢位

受影響的版本:10、11、12 Beta。

已驗證的使用者可以透過將自己的密碼變更為精心製作的值來建立堆疊型緩衝區溢位。 除了能夠使 PostgreSQL 伺服器崩潰之外,還可以進一步利用它來以 PostgreSQL 作業系統帳戶的身分執行任意程式碼。

此外,惡意伺服器可以在 SCRAM 驗證過程中傳送特別製作的訊息,並導致啟用 libpq 的用戶端崩潰或以用戶端作業系統帳戶的身分執行任意程式碼。

透過升級和重新啟動 PostgreSQL 伺服器以及 libpq 安裝來解決此問題。 建議所有執行 PostgreSQL 10、11 和 12 Beta 的使用者盡快升級。

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

錯誤修復和改進

自 5 月份的上次累計更新以來,此更新還修復了 25 多個錯誤。 其中一些問題僅影響版本 11,但許多問題影響所有支援的版本。

其中一些修復包括

  • 修正執行時間分割區修剪中的各種錯誤,這些錯誤可能導致分割資料表上查詢的錯誤答案
  • pg_dump 現在使用 CREATE TABLEALTER TABLE .. ATTACH PARTITION 重新建立資料表分割區,而不是在建立命令中包含 PARTITION OF
  • 改進 initdb 確定要選擇哪個系統時區的方式(如果時區有等效的名稱)。 也明確地優先選擇 UTC 而不是 UCT
  • 修復嘗試將觸發程式定義複製到新分割區時可能發生的崩潰
  • 修復資料表具有部分排除約束時 ALTER TABLE .. ALTER COLUMN TYPE 的失敗
  • 修復針對網域的註解的 COMMENT 命令的失敗
  • 多個與聚合相關的修復
  • 修復錯誤的合併附加計畫產生,這可能導致「找不到路徑鍵項目以進行排序」錯誤
  • 修復傾印/還原上的失敗,其中視窗包含具有重複聯結名稱的查詢
  • 修復將 JSON 字串常值轉換為 json_to_record()json_populate_record() 中的 JSON 類型輸出欄位
  • 修復規則運算式中 {1,1} 量詞的不正確最佳化
  • 修復 B 樹索引在涉及使用 INCLUDE 子句涵蓋的欄位的邊緣案例失敗期間的問題,該問題在 VACUUM 期間會出現錯誤。 如果您受到此問題的影響,則需要重新索引特定索引
  • 修復檢查預先存在的共用記憶體區段是否仍被衝突的 postmaster 使用時的競爭情況
  • 修復 walreceiver 程序,以避免關閉時崩潰或死鎖
  • 如果使用 SSL 並且 OpenSSL 的待處理資料緩衝區包含 256 個位元組的精確倍數,則避免 libpq 中可能發生的掛起
  • 修復 pg_dumppg_dumpall 針對資料庫和資料表空間發出的 GRANT 命令的順序
  • 修復來自 reindexdb 的誤導性錯誤報告
  • 確保在使用平行工作時發生錯誤時,vacuumdb 會傳回正確的狀態
  • 修復 contrib/auto_explain,以避免在平行查詢中引起問題,從而導致類似「在 shm TOC 中找不到金鑰 N」的失敗
  • 考量 contrib/postgres_fdw 中本機 BEFORE ROW UPDATE 觸發程式可能進行的資料修改
  • 在 Windows 上,避免在資料庫編碼設定為 SQL_ASCII 並且我們嘗試記錄非 ASCII 字串時發生失敗

更新

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

如果您使用 INCLUDE 子句的 B 樹索引之一受到上述問題的影響,則需要重新索引任何受影響的索引。 該問題會根據 VACUUM 期間發生的錯誤來顯現出來。 您可以在此處閱讀有關重新索引的更多資訊

https://postgres.tw/docs/current/sql-reindex.html

跳過一個或多個更新版本的使用者可能需要執行其他更新後步驟;有關詳細資訊,請參閱早期版本的發布說明。

PostgreSQL 9.4 將於 2020 年 2 月 13 日停止接收修復程式。 有關更多資訊,請參閱我們的 版本控制政策

Beta 版排程

這包括版本 12 的第二個 Beta 版。 PostgreSQL 專案將根據測試需要發布其他 Beta 版,然後發布一個或多個候選版本,直到 2019 年底的最終版本。 有關更多資訊,請參閱 Beta 測試頁面。

連結