2016-03-31 安全性更新發布

由 PostgreSQL Global Development Group 於 2016-03-31 發布

PostgreSQL Global Development Group 已經發布了我們資料庫系統所有支援版本的更新,包含 9.5.2、9.4.7、9.3.12、9.2.16 和 9.1.21。此版本修正了兩個安全性問題,以及版本 9.5 中的一個索引損毀問題。它也包含了早期版本的各種錯誤修正。PostgreSQL 9.5.0 或 9.5.1 的使用者應盡快更新。

針對 RLS、BRIN 的安全性修正

此版本關閉了安全性漏洞 CVE-2016-2193,在同一個會話中,查詢計畫可能會被多個 ROLE 重複使用。這可能會導致查詢使用了錯誤的資料列層級安全性 (Row Level Security, RLS) 策略。

此更新也修正了 CVE-2016-3065,一個因為使用 pageinspect 與 BRIN 索引頁面而觸發的伺服器崩潰錯誤。由於攻擊者可能可以暴露伺服器記憶體的幾個位元組,因此這個崩潰被視為一個安全性問題。

縮寫鍵和損毀的索引

在此版本中,由於收到索引損毀的報告,PostgreSQL 專案被迫停用 9.5 針對許多索引的縮寫鍵 (Abbreviated Keys) 效能功能。這可能會影響 TEXT、VARCHAR 和 CHAR 欄位上,且不在 "C" locale 中的任何 B-tree 索引。其他 locale 中的索引將失去該功能的效能優勢,並且應該在現有索引損毀的情況下進行 REINDEX。如果專案找到問題的解決方案,該功能可能會在未來版本中重新啟用。有關更多資訊,請參閱發布說明和 關於此問題的 wiki 頁面

其他修正和改進

除了上述之外,此版本還根據過去幾個月使用者回報的錯誤修正了許多其他問題。這包括影響 PostgreSQL 多個版本的錯誤,例如:

  • 修正了索引 ROW() 比較的兩個錯誤
  • 避免因為重新命名檔案而導致資料遺失
  • 防止在 SELECT FOR UPDATE/SHARE 中重新檢查資料列時發生錯誤
  • 修正了多個 json_ 和 jsonb_ 函式的錯誤
  • 正確記錄 INSERT ON CONFLICT 的鎖定等待
  • 忽略 recovery_min_apply_delay 直到達到一致的狀態
  • 修正 pg_subtrans XID 循環問題
  • 修正邏輯解碼中的各種錯誤
  • 修正了具有巢狀安全性屏障檢視表的規劃器錯誤
  • 防止 GIN 索引中的記憶體洩漏
  • 修正了 ispell 字典的兩個問題
  • 避免在舊版 Windows 上崩潰
  • 跳過在 pg_upgrade 中建立錯誤的刪除腳本
  • 將空陣列正確地轉換為 PL/Perl
  • 使 PL/Python 能夠處理識別碼名稱

此更新還包含 tzdata 版本 2016c,其中包含亞塞拜然、智利、海地、巴勒斯坦和俄羅斯的更新,以及其他地區的歷史修正。

更新

版本 9.5 的使用者將需要 REINDEX 在非 C locale 的字元欄位上建立的任何索引。跳過了多個更新版本的其他版本的使用者可能需要執行額外的更新後步驟;請參閱發布說明以了解詳細資訊。

所有 PostgreSQL 更新版本都是累積性的。與其他次要版本一樣,使用者不需要轉儲和重新載入他們的資料庫,也不需要使用 pg_upgrade 才能套用此更新版本;您可以簡單地關閉 PostgreSQL 並更新其二進位檔案。

連結