PostgreSQL 全球開發團隊已發布對所有支援版本的資料庫系統的更新,包括 11.5、10.10、9.6.15、9.5.19 和 9.4.24,以及 PostgreSQL 12 的第三個 Beta 版本。此版本修正了 PostgreSQL 伺服器中的兩個安全性問題、PostgreSQL Windows 安裝程式之一中的兩個安全性問題,以及自先前版本以來報告的 40 多個錯誤。
使用者應盡快安裝這些更新。
本著 PostgreSQL 開放原始碼社群的精神,我們強烈建議您在資料庫系統中測試 PostgreSQL 12 的新功能,以幫助我們消除可能存在的任何錯誤或其他問題。雖然我們不建議您在生產環境中執行 PostgreSQL 12 Beta 3,但我們鼓勵您尋找方法針對此 Beta 版本執行典型的應用程式工作負載。
您的測試和回饋將有助於社群確保 PostgreSQL 12 版本維持我們提供世界上最先進的開放原始碼關聯式資料庫的穩定、可靠版本的標準。
此版本已關閉四個安全性漏洞
pg_temp
中的 TYPE
在 SECURITY DEFINER
執行期間執行任意 SQL受影響版本:9.4 - 11
給定一個合適的 SECURITY DEFINER
函數,攻擊者可以使用函數所有者的身份執行任意 SQL。攻擊需要函數的 EXECUTE
權限,該函數本身必須包含一個具有不精確參數類型匹配的函數呼叫。例如,length('foo'::varchar)
和 length('foo')
是不精確的,而 length('foo'::text)
是精確的。 作為利用此漏洞的一部分,攻擊者使用 CREATE DOMAIN
在 pg_temp
結構描述中建立類型。 攻擊模式和修復方式與 CVE-2007-2138 類似。
編寫 SECURITY DEFINER
函數仍然需要
遵循文件中註明的注意事項
https://postgres.tw/docs/current/sql-createfunction.html#SQL-CREATEFUNCTION-SECURITY
PostgreSQL 專案感謝 Tom Lane 報告此問題。
受影響版本:11
在包含假設的、使用者定義的雜湊相等運算子的資料庫中,攻擊者可以讀取伺服器記憶體的任意位元組。 為了使攻擊成為可能,超級使用者需要建立不尋常的運算子。 對於目的不是為了攻擊而設計的運算子來說,有可能具有啟用攻擊的屬性,但我們不知道具體的例子。
PostgreSQL 專案感謝 Andreas Seltenreich 報告此問題。
受影響版本:9.4 - 11 版本的 EnterpriseDB Windows 安裝程式
EnterpriseDB Windows 安裝程式將密碼寫入其安裝目錄中的暫存檔,建立初始資料庫,然後刪除該檔案。 在檔案存在的幾秒鐘內,本地攻擊者可以從該檔案讀取 PostgreSQL 超級使用者密碼。
PostgreSQL 專案感謝 Noah Misch 報告此問題。
受影響版本:9.4 - 11 版本的 EnterpriseDB Windows 安裝程式
當資料庫伺服器或 libpq 客戶端函式庫初始化 SSL 時,libeay32.dll 嘗試從硬式編碼的目錄讀取設定。 通常,該目錄不存在,但任何本地使用者都可以建立它並注入設定。 此設定可以指示 OpenSSL 以執行 PostgreSQL 伺服器或客戶端的用戶身份載入和執行任意程式碼。 大多數 PostgreSQL 客戶端工具和函式庫都使用 libpq,並且可以使用它們遇到此漏洞。 此漏洞與 CVE-2019-5443 非常相似,但它是獨立產生的。 可以透過將環境變數 OPENSSL_CONF 設定為 "NUL:/openssl.cnf" 或任何其他不可能作為檔案存在的名稱來解決此漏洞。
PostgreSQL 專案感謝 curl 安全團隊的 Daniel Gustafsson 報告此問題。
此更新還修正了過去幾個月報告的 40 多個錯誤。 其中一些問題僅影響版本 11,但許多問題影響所有支援的版本。
其中一些修復包括
ALTER TABLE ... ALTER COLUMN TYPE
的問題。 此問題是在先前的累積更新(11.4、10.9、9.6.14、9.5.18、9.4.23 和 12 beta 2)中引入的。pg_upgrade
。EXISTS
查詢中出現重複的結果列。-infinity
/infinity
端點的日期範圍的規範化,以確保行為與文件一致。money
值轉換為 numeric
時遺失小數位數的問題。\r
歸位字元,這會在某些邊緣情況下導致連線失敗。psql
的多個修復,其中包括避免在 SET variable =
後出現不正確的 Tab 鍵完成選項。contrib/amcheck
的索引驗證的可靠性。initdb
以首選 C 函式庫定義的時區行為,而不是 localtime
或 posixrules
定義的行為。 這確保 PostgreSQL 使用「真實」時區名稱,而不是人工名稱。pg_dump
,確保自訂運算子類別以正確的順序傾印,以防止建立無法還原的傾印。pgbench
中可能發生的鎖定。此更新還包含 tzdata 2019b 版本,以因應巴西的日光節約時間法規變更,以及香港、義大利和巴勒斯坦的歷史修正。 此更新還新增了對 zic 新的 -b slim 選項的支援,以減少已安裝時區檔案的大小,但 PostgreSQL 目前尚未使用。
如需更多詳細資訊,您可以在此處閱讀完整的版本說明
https://postgres.tw/docs/release/
所有 PostgreSQL 更新版本都是累積性的。 與其他次要版本一樣,使用者無需傾印和重新載入其資料庫或使用 pg_upgrade
即可套用此更新版本;您可以簡單地關閉 PostgreSQL 並更新其二進位檔案。
跳過一個或多個更新版本的使用者可能需要執行其他更新後步驟;請參閱早期版本的版本說明以取得詳細資訊。
PostgreSQL 9.4 將於 2020 年 2 月 13 日停止接收修正。 請參閱我們的版本控制策略以取得更多資訊。
每個 PostgreSQL 版本的穩定性很大程度上取決於您,社群,使用您的工作負載和測試工具測試即將推出的版本,以便在 PostgreSQL 12 正式發布之前找到錯誤和回歸問題。 由於這是一個 Beta 版本,資料庫行為、功能細節和 API 的細微變更仍然可能發生。 您的回饋和測試將有助於確定新功能的最終調整,因此請在近期進行測試。 使用者測試的品質有助於確定我們何時可以發布最終版本。
公開問題清單可在 PostgreSQL wiki 中找到。 您可以使用 PostgreSQL 網站上的此表單回報錯誤
https://postgres.tw/account/submitbug/
這是第 12 版的第三個 Beta 版本。 PostgreSQL 專案將根據測試需要發布其他 Beta 版本,然後發布一個或多個候選版本,直到 2019 年末的最終版本。 如需更多資訊,請參閱Beta 測試頁面。