IVM 開發團隊已釋出 pg_ivm 1.5.1,以解決安全性問題:CVE-2023-22847、CVE-2023-23554。
敏感資訊暴露給未經授權的行為者 (CWE-200) - CVE-2023-22847 由 pg_ivm 建立的增量可維護實體化視窗 (IMMV) 可能會反映具有列層級安全性 (Row-Level Security) 的列,而 IMMV 的擁有者不應該有權限存取這些列。
不受控制的搜尋路徑元素 (CWE-427) - CVE-2023-23554 在重新整理 IMMV 時,pg_ivm 會執行函數,而未指定綱要名稱。在某些情況下,pg_ivm 可能會被誘騙以 IMMV 擁有者的權限執行來自其他綱要的意外函數。
修正在視窗維護期間的列層級安全性檢查 (Yugo Nagata) (CVE-2023-22847)
視窗維護是在視窗擁有者的權限下執行的。如果修改過的表格具有 (列層級安全性) RLS 策略,則在視窗維護期間,必須使用 IMMV 擁有者的權限存取該表格中的列,因此視窗擁有者不可見的列不得出現在 IMMV 中。但是,安全性檢查未得到適當處理,並且當視窗在包含多種類型命令的查詢(例如包含 INSERT 和 UPDATE 的修改 CTE 或 MERGE 命令)期間以增量方式重新整理時,本不應從視窗擁有者存取的列可能會出現在視窗內容中。
修正為在維護期間使用合格的函數名稱 (Yugo Nagata) (CVE-2023-23554)
先前,在視窗維護期間使用的 pg_catalog 綱要中的函數名稱未限定。 這是個問題,因為可能會無意中引用其他綱要中的函數。 此外,如果惡意使用者可以建立函數,則可能導致權限提升,並且可以在 IMMV 擁有者的權限下執行任意函數。
在 search_path 變更後,重建用於重新計算最小值/最大值的查詢 (Yugo Nagata) (CVE-2023-23554)
用於重新計算最小值/最大值的快取計畫是從視窗定義查詢文字建立的。 因此,當 search_path 變更時,查詢文字會再次分析,並且可能會在計畫中引用錯誤綱要中的表格或函數。 現在已修正此問題,以便在 search_path 變更後,計畫會從新的查詢字串重建,其中表格/函數名稱已在最新的 search_path 下正確限定。
完整變更日誌: https://github.com/sraoss/pg_ivm/compare/v1.5...v1.5.1
pg_ivm 是一個擴充模組,提供增量視窗維護 (IVM) 功能。
增量視窗維護 (IVM) 是一種使實體化視窗保持最新的方法,其中僅計算並應用視窗上的增量變更,而不是重新計算。 pg_ivm 提供一種即時維護,其中在修改基本表格後立即更新實體化視窗。