PostgreSQL 全球開發團隊今天發布了 PostgreSQL 物件關係資料庫系統所有活躍分支的安全性更新,包括版本 9.1.3、9.0.7、8.4.11 和 8.3.18。
pg_dump 的使用者、使用 SSL 憑證進行驗證的使用者或使用 SECURITY DEFINER 的觸發程序的使用者應立即升級其安裝。 強烈建議所有其他資料庫管理員在下一次計畫的停機時間升級您的 PostgreSQL 版本。 有關安全性修復的更多詳細資訊包含在下面。
此更新中錯誤修復影響的功能包括:二進位複寫和熱備援、GIN、WITH、外部資料包裝器、PL/pgsql、PL/python、inet 資料類型、intarray、pgcrypto、pg_upgrade、pg_restore 和 pg_dump。 這些功能的使用者應儘快套用更新。
此版本包含 45 個對 9.1 版本的修復,以及對舊版本的少量修復,包括
與其他小版本一樣,使用者無需傾印和重新載入其資料庫或使用 pg_upgrade 即可套用此更新版本; 您只需關閉 PostgreSQL 並更新其二進位檔案即可。 重新啟動資料庫後執行更新後的步驟。
此更新包含以下問題的三個安全性修復
此修復可防止使用者定義觸發程序,這些觸發程序執行使用者沒有 EXECUTE 權限的函數。
CREATE TRIGGER 未對要呼叫的觸發程序函數進行任何權限檢查。 沒有特權的資料庫使用者可以將觸發程序函數附加到他們擁有的表,並使其在其選擇的資料上被呼叫。 通常,這將以表所有者的權限執行,因此不會提供額外的功能。 但是,如果觸發程序函數標記為 SECURITY DEFINER,則可能會發生權限提升。
這修復了 SSL 一般名稱截斷,這可能允許在特殊情況下劫持 SSL 連線。
使用 SSL 憑證時,用戶端和伺服器都可以配置為根據其提供的憑證中的一般名稱驗證另一方的主機名稱。 但是,從憑證中提取的名稱被錯誤地截斷為 32 個字元。 通常,這只會導致驗證失敗,但如果機器的實際主機名稱正好是 32 個字元長,則原則上可能會被欺騙。 這種情況實際發生的風險似乎不大,並且攻擊者仍然需要在 PostgreSQL 之外採取額外的步驟才能成功利用。
此修復從 dumpfile 註解中刪除 '\n' 和 '\r'。
pg_dump 將物件名稱複製到 SQL 腳本中的註解中,而未對其進行清理。 包含換行符和 SQL 命令的物件名稱將導致 dump 腳本,其中 SQL 命令被暴露以供執行。 當且如果重新載入 dump 腳本時,該命令將以執行該腳本的任何人的權限執行 - 通常是超級使用者。
所有支援的 PostgreSQL 版本都受到影響。 有關每個版本的完整變更列表,請參閱版本說明,其中包含修復和步驟的詳細資訊。
立即下載新版本