pg_ivm 1.5.1 安全更新发布

由 IVM 开发小组 发布于 2023-03-02
相关开源 安全

IVM 开发小组发布了 pg_ivm 1.5.1,以解决安全问题:CVE-2023-22847,CVE-2023-23554。

安全问题

  • 敏感信息泄露给未经授权的用户 (CWE-200) - CVE-2023-22847 由 pg_ivm 创建的增量可维护物化视图 (IMMV) 可能反映行级安全策略下的行,而 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

pg_ivm 是一个提供增量视图维护 (IVM) 功能的扩展模块。

增量视图维护 (IVM) 是一种使物化视图保持最新状态的方法,其中仅计算和应用视图的增量更改,而不是重新计算。 pg_ivm 提供了一种即时维护,其中物化视图在修改基表后立即更新。

源代码库:https://github.com/sraoss/pg_ivm