PostgreSQL 12.3、11.8、10.13、9.6.18 和 9.5.22 已發布!

發表於 2020-05-14,作者:PostgreSQL Global Development Group
PostgreSQL 專案 安全性

PostgreSQL Global Development Group 已發布對我們資料庫系統所有支援版本的更新,包括 12.3、11.8、10.13、9.6.18 和 9.5.22。此版本修復了 PostgreSQL 伺服器中發現的一個安全性問題以及過去三個月中報告的 75 多個錯誤。

請盡早安排更新。

安全性問題

  • CVE-2020-10733:Windows 安裝程式從不受控制的目錄執行可執行檔。

受影響的版本:9.5 - 12。安全團隊不測試不受支援的版本,但此問題在 PostgreSQL 9.5 之前就已存在。

PostgreSQL 的 Windows 安裝程式調用沒有完整路徑的系統提供的可執行檔。 安裝程式載入的目錄或目前工作目錄中的可執行檔優先於預期的可執行檔。 具有將檔案新增到其中一個目錄的權限的攻擊者可以使用它來以安裝程式的管理員權限執行任意程式碼。

PostgreSQL 專案感謝 Hou JingYi (@hjy79425575) 報告此問題。

錯誤修復和改進

此更新還修復了過去幾個月中報告的 75 多個錯誤。 其中一些問題僅影響版本 12,但也可能影響所有支援的版本。

其中一些修復包括

  • 多個 GENERATED 直欄的修復,包括當產生的直欄的輸出與表格中實際直欄完全相同時,可能會導致表格崩潰或資料損壞的問題,例如,如果表達式調用了一個可以傳回其自身輸入的函數。
  • 多個 ALTER TABLE 的修復,包括確保 SET STORAGE 指令傳播到表格的索引。
  • 修復當另一個會話正在刪除相同的物件時使用 DROP OWNED BY 時可能發生的競爭條件。
  • 允許在分割區具有繼承的 ROW 觸發器時將其分離。
  • 多個 REINDEX CONCURRENTLY 的修復,特別是在 REINDEX CONCURRENTLY 操作失敗時出現的問題。
  • 修復 COLLATE 應用於分割區邊界表達式中無法歸類的類型時發生的崩潰。
  • 修復浮點溢位/低位溢位偵測中的效能衰退。
  • 多個全文搜尋的修復,特別是短語搜尋。
  • 修復查詢生命週期內記憶體洩漏,該洩漏發生在查詢的 FROM 子句中使用的集合傳回函數中。
  • 多個 VACUUM VERBOSE 輸出的報告修復。
  • 允許輸入圓圈類型以接受 (x,y),r 格式,該格式在文件中指定。
  • 允許 get_bit()set_bit() 函數在長度超過 256MB 的 bytea 字串上不會失敗。
  • 避免在崩潰恢復期間過早回收 WAL 段,這可能會導致 WAL 段在封存之前被回收。
  • 透過跳過無關的時間軸,避免嘗試從恢復期間的封存儲存空間中提取不存在的 WAL 檔案。
  • 多個邏輯複製和複製槽的修復。
  • 修復同步待命管理中的多個競爭條件,包括變更 synchronous_standby_names 設定時發生的競爭條件。
  • 多個 GSSAPI 支援的修復,包括修復使用 GSSAPI 加密時發生的記憶體洩漏。
  • 確保 pg_read_all_stats 角色的成員可以讀取所有統計資訊視窗。
  • 修復 information_schema.triggers 視窗中的效能衰退。
  • 修復使用 sslmode=verify-full 時 libpq 中的記憶體洩漏。
  • 修復嘗試重新建立失敗連線時 psql 中的崩潰。
  • 允許在 psql 中使用 Tab 鍵完成 \gx 命令的檔案名稱引數。
  • ALTER ... DEPENDS ON EXTENSION 新增 pg_dump 支援。
  • pg_dump 的其他多個修復,其中包括傾印 RLS 政策上的註解,以及將事件觸發器的還原延遲到最後。
  • 確保 pg_basebackup 產生有效的 tar 檔案。
  • pg_checksums 跳過屬於不同 PostgreSQL 主要版本的 tablespace 子目錄
  • 多個 Windows 相容性修復

此更新還包含摩洛哥和加拿大育空地區 DST 法律變更的 tzdata 版本 2020a,以及上海的歷史更正。 America/Godthab 區域已重新命名為 America/Nuuk,以反映目前的英文用法; 但是,舊名稱仍然可用作相容性連結。 這也會更新 initdb 的已知 Windows 時區名稱清單,以包含最近新增的內容。

如需可用變更的完整清單,請檢閱版本資訊

更新

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

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

如需更多詳細資訊,請參閱版本資訊

連結