PostgreSQL 安全漏洞 CVE-2024-4317
之前没有特别注意这个漏洞,这里稍微记一笔。
PostgreSQL 包含一系列系统视图,这些系统视图可以用来查询系统表。
由于 pg_stats_ext
和 pg_stats_ext_exprs
这两个视图在 PostgreSQL 14-16 的 16.3、15.7 和 14.12 之前的版本中缺少了必要的访问控制,
因此未经授权的用户将可以通过这些视图访问其他用户通过 CREATE STATISTICS
创建的一系列统计数据,而这些数据可能会揭示这些未经授权的用户原本没有权限访问的数据,或是函数的执行结果。
PostgreSQL 在 16.3、15.7 和 14.12 中修正了这一问题,但这仅限于新安装的情况。
对于已经安装好的正在运行的数据库,管理员还必须重建这两个系统视图以收紧权限(加入了 WITH (security_barrier)
以及 WHERE
子句来限制访问)。
修正脚本位于源代码的 src/backend/catalog/fix-CVE-2024-4317.sql
(对于 FreeBSD pkg 用户,这些修正脚本会安装到 /usr/local/share/postgresql/fix-CVE-2024-4317.sql
),
使用 psql
运行即可。
总体而言,这个问题只有在已经实现了精细访问控制时比较重要, 如果应用程序本身没有实现正确的基于角色使用不同用户访问数据库的话, 管理员可能需要担心的是其他更严重的问题。