PostgreSQL 全球开发团队于 2024 年 11 月 14 日宣布,对所有受支持的 PostgreSQL 版本进行了更新,包括 17.1、16.5、15.9、14.14、13.17 和 12.21。此次更新修复了 4 个安全漏洞和过去几个月报告的超过 35 个错误。
目录
安全问题
CVE-2024-10976:PostgreSQL 行安全策略未能正确处理用户 ID 更改
PostgreSQL 在跟踪带有行安全策略的表时存在不完整的情况,这可能导致重用的查询查看或更改与预期不同的行。CVE-2023-2455 和 CVE-2016-2193 修复了行安全策略与用户 ID 更改之间的大部分交互问题,但遗漏了一些情况,例如子查询、WITH 查询、安全调用者视图或 SQL 语言函数引用了带有行级安全策略的表。这可能导致在应用角色特定策略时,错误地应用策略,从而允许用户完成原本禁止的读取和修改操作。
CVE-2024-10977:PostgreSQL libpq 保留了中间人攻击的错误消息
PostgreSQL 客户端使用服务器错误消息时,可能允许不受信任的服务器在当前 SSL 或 GSS 设置下向 libpq 应用程序提供任意非空字节。例如,中间人攻击者可以发送一个长错误消息,使得人类或 psql 的屏幕抓取用户将其误认为是有效的查询结果。
CVE-2024-10978:PostgreSQL SET ROLE 和 SET SESSION AUTHORIZATION 重置到错误的用户 ID
PostgreSQL 中不正确的权限分配可能导致权限较低的应用用户查看或更改与预期不同的行。攻击需要应用程序使用 SET ROLE、SET SESSION AUTHORIZATION 或类似功能。问题出现在应用程序查询使用攻击者提供的参数或将查询结果传达给攻击者时,如果该查询响应 current_setting(‘role’) 或当前用户 ID,它可能会修改或返回数据,就好像会话没有使用 SET ROLE 或 SET SESSION AUTHORIZATION。
CVE-2024-10979:PostgreSQL PL/Perl 环境变量更改执行任意代码
PostgreSQL PL/Perl 中对环境变量控制不当,允许无权限的数据库用户更改敏感进程环境变量(例如 PATH)。这通常足以启用任意代码执行,即使攻击者缺乏数据库服务器操作系统用户权限。
错误修复和改进
此次更新修复了过去几个月报告的超过 35 个错误。以下是一些影响 PostgreSQL 17 的问题,这些问题可能也影响其他受支持的 PostgreSQL 版本:提交更改级别 权限 共享
此次更新还更新了时区数据文件至 tzdata 2024b 版本。这个 tzdata 版本将旧的 System-V 兼容性时区名称更改为对应地理时区的别名;例如,PST8PDT 现在是 America/Los_Angeles 的别名。主要可见的后果是,对于标准化时区引入之前的的时间戳,该时区被认为代表命名地点的本地平均太阳时间。例如,在 PST8PDT 中,时间戳 tz 输入如 1801-01-01 00:00 以前会被渲染为 1801-01-01 00:00:00-08,但现在被渲染为 1801-01-01 00:00:00-07:52:58。
此外,还有对墨西哥、蒙古和葡萄牙的历史修正。特别是,Asia/Choibalsan 现在是 Asia/Ulaanbaatar 的别名,而不是一个单独的时区,主要是因为发现这两个时区之间的差异基于不可信的数据。
更新说明
所有 PostgreSQL 更新版本都是累积的。与其他次要版本一样,用户不需要转储和重新加载数据库或使用 pg_upgrade 来应用此更新版本;你只需关闭 PostgreSQL 并更新其二进制文件即可。
如果你有带有外键约束的分区表并运行了 ATTACH PARTITION/DETACH PARTITION 命令,升级后你需要采取进一步的步骤。你可以通过对每个有缺陷的约束执行 ALTER TABLE … DROP CONSTRAINT 来修复这个问题,然后重新添加约束。如果重新添加约束失败,你需要手动重新建立引用表和被引用表之间的一致性,然后重新添加约束。
此查询可用于识别破损的约束并构建重新创建它们所需的命令:
由于可能有一个或多个 ADD CONSTRAINT 步骤会失败,你应该将查询的输出保存在文件中,然后尝试执行每一步。雪豹os区别
此外,如果你正在运行 PostgreSQL 17.0 并使用 libc 作为默认校对提供者,并且设置了 LC_CTYPE 为 C 而 LC_COLLATE 是不同的区域设置,你需要重建基于文本的索引。你可以使用 REINDEX INDEX CONCURRENTLY 命令来完成。
跳过一个或多个更新版本的用户可能需要运行额外的更新后步骤;请参考早期版本的发布说明以获取详细信息。
有关更多详细信息,请查看发布说明。松下发布声明后不久,华为也进行了回应
相关链接
未经允许不得转载:科技让生活更美好 » PostgreSQL 17.1、16.5、15.9、14.14、13.17 和 12.21 版本发布