PostgreSQL Global Development Group 已發布對我們資料庫系統所有支援版本的更新,包括 11.3、10.8、9.6.13、9.5.17 和 9.4.22。 此版本修復了 PostgreSQL 伺服器中的兩個安全性問題、PostgreSQL Windows 安裝程式中的兩個安全性問題,以及過去三個月回報的 60 多個錯誤。
使用 EnterpriseDB 和 BigSQL 的 Windows 安裝程式安裝 PostgreSQL 的使用者應儘快升級。 同樣地,執行任何 PostgreSQL 9.5、9.6、10 和 11 版本的使用者也應計劃儘快升級。
所有其他使用者應計劃在下一次排定的停機時間套用此更新。
此版本已關閉四個安全性漏洞
由於 EnterpriseDB 和 BigSQL Windows 安裝程式均未鎖定 PostgreSQL 二進位安裝目錄和資料目錄的權限,因此未授權的 Windows 使用者帳戶和未授權的 PostgreSQL 帳戶可能導致 PostgreSQL 服務帳戶執行任意程式碼。
此漏洞存在於這些安裝程式所有支援的 PostgreSQL 版本中,並且可能存在於較舊的版本中。 這兩組安裝程式都已修復新安裝和現有安裝的這些目錄的權限。 如果您使用其他方法在 Windows 上安裝了 PostgreSQL,我們建議您檢查您的 PostgreSQL 二進位目錄是否僅可由受信任的使用者寫入,並且您的資料目錄是否僅可由受信任的使用者存取。
PostgreSQL 專案感謝 Conner Jones 回報此問題。
在此版本之前,執行 PostgreSQL 11 的使用者可以透過對分割資料表執行精心製作的 INSERT 語句來讀取伺服器記憶體的任意位元組。
PostgreSQL 透過對欄位中可用的資料進行取樣來維護資料表的統計資訊; 在查詢計劃過程中會諮詢此資料。 在此版本之前,能夠執行具有讀取給定欄位權限的 SQL 查詢的使用者可以製作洩漏運算子,該運算子可以讀取已從該欄位取樣的任何資料。 如果這恰好包含使用者被列層級安全性原則禁止查看的列中的值,則使用者可以有效地繞過該原則。 解決方法是僅允許非防洩漏運算子在資料表沒有相關列層級安全性原則時使用此資料。
此問題存在於 PostgreSQL 9.5、9.6、10 和 11 中。 PostgreSQL 專案感謝 Dean Rasheed 回報此問題。
此更新還修復了過去幾個月回報的 60 多個錯誤。 其中一些問題僅影響 11 版,但許多問題影響所有支援的版本。
其中一些修復包括
ALTER TABLE
相關的修復txid_status()
中可能發生的「無法存取交易狀態」錯誤INSERT .. VALUES
語句中的明確 DEFAULT 項目,其中有多個 VALUES 列CREATE TABLE IF NOT EXISTS .. AS EXECUTE ..
語句的缺失支援lc_time
設置的處理data
目錄中其他檔案相同的權限建立 current_logfiles
檔案pg_verify_checksums
驗證它指向的資料目錄是否為正確的 PostgreSQL 版本contrib/postgres_fdw
修復,包括遠端分割區的修復,其中 UPDATE 可能導致不正確的結果或崩潰此更新還包含用於巴勒斯坦和梅特拉卡特拉 DST 法律變更的 tzdata 版本 2019a,以及以色列的歷史修正。 Etc/UCT 現在是 Etc/UTC 的向後相容連結,而不是產生縮寫 UCT 的單獨區域,現在 UCT 通常是一個錯字。 PostgreSQL 仍將接受 UCT 作為輸入區域縮寫,但不會輸出它。
所有 PostgreSQL 的更新版本都是累積性的。與其他小版本更新一樣,使用者不需要傾印和重新載入資料庫,也不需要使用 pg_upgrade
來套用此更新版本;您可以直接關閉 PostgreSQL 並更新其二進位檔案即可。
跳過一個或多個更新版本的使用者可能需要執行額外的更新後步驟;請參閱先前版本的發布說明以取得詳細資訊。
PostgreSQL 9.4 將於 2020 年 2 月 13 日停止接收修復程式。請參閱我們的 版本控制政策 以取得更多資訊。