PostgreSQL 18.2、17.8、16.12、15.16 和 14.21 版本发布!

发布于 2026-02-12,PostgreSQL Global Development Group
PostgreSQL 安全相关

PostgreSQL 全球开发组已发布所有受支持版本的更新,包括 18.2、17.8、16.12、15.16 和 14.21。本次发布修复了 5 个安全漏洞以及过去数月报告的 65 个以上 Bug。

完整变更列表请参阅发行说明

安全问题

CVE-2026-2003:PostgreSQL oidvector 泄露少量内存字节

CVSS v3.1 基础评分:4.3

受影响的支持版本:14 - 18。

PostgreSQL 中 oidvector 类型的验证不当,允许数据库用户泄露服务器的少量内存字节。虽然我们尚未排除攻击者利用泄露字节获取机密信息的可能性,但此类攻击的可行性较低。PostgreSQL 18.2、17.8、16.12、15.16 和 14.21 之前的版本受此影响。

PostgreSQL 项目组感谢 Altan Birler 报告此问题。

CVE-2026-2004:PostgreSQL intarray 选择性估算器缺少输入类型验证,可执行任意代码

CVSS v3.1 基础评分:8.8

受影响的支持版本:14 - 18。

PostgreSQL intarray 扩展的选择性估算器函数缺少输入类型验证,允许对象创建者以运行数据库的操作系统用户身份执行任意代码。PostgreSQL 18.2、17.8、16.12、15.16 和 14.21 之前的版本受此影响。

PostgreSQL 项目组感谢 Daniel Firer(来自 zeroday.cloud)报告此问题。

CVE-2026-2005:PostgreSQL pgcrypto 堆缓冲区溢出可执行任意代码

CVSS v3.1 基础评分:8.8

受影响的支持版本:14 - 18。

PostgreSQL pgcrypto 中的堆缓冲区溢出漏洞允许密文提供者以运行数据库的操作系统用户身份执行任意代码。PostgreSQL 18.2、17.8、16.12、15.16 和 14.21 之前的版本受此影响。

PostgreSQL 项目组感谢 Team Xint Code(来自 zeroday.cloud)报告此问题。

CVE-2026-2006:PostgreSQL 缺少多字节字符长度验证,可执行任意代码

CVSS v3.1 基础评分:8.8

受影响的支持版本:14 - 18。

PostgreSQL 文本处理中缺少多字节字符长度验证,允许数据库用户通过构造特殊查询实现缓冲区溢出,从而以运行数据库的操作系统用户身份执行任意代码。PostgreSQL 18.2、17.8、16.12、15.16 和 14.21 之前的版本受此影响。

PostgreSQL 项目组感谢 Paul Gerste 和 Moritz Sanft(来自 zeroday.cloud)报告此问题。

CVE-2026-2007:PostgreSQL pg_trgm 堆缓冲区溢出向服务器内存写入模式数据

CVSS v3.1 基础评分:8.2

受影响的支持版本:18。

PostgreSQL pg_trgm 中的堆缓冲区溢出漏洞允许数据库用户通过构造特殊输入字符串造成未知影响。攻击者对可写入的字节模式控制有限,但我们尚未排除导致权限提升的攻击可行性。PostgreSQL 18.1 和 18.0 受此影响。

PostgreSQL 项目组感谢 Heikki Linnakangas 报告此问题。

Bug 修复与改进

本次更新修复了过去数月报告的 65 个以上 Bug。以下列出的问题影响 PostgreSQL 18,其中部分问题也可能影响其他受支持版本。

  • 修复 ltree 扩展中大小写不敏感文本匹配不一致的问题。如果您在 ltree 列上使用了索引,某些情况下可能需要重建索引。详见"升级"部分的附加说明。
  • 执行 ALTER TABLE ... ADD CONSTRAINT 在已标记为 NOT NULL 的列上添加 NOT NULL 约束时,现在要求约束名称与已有约束名称匹配。
  • 修复从 WITH 查询中执行 MERGE 时的触发器行为,使其包含受 MERGE 影响的行。
  • 多项查询规划器修复。
  • 修复非确定性排序规则下文本子串搜索的问题。
  • 多项 NOTIFY 错误处理和报告方面的修复。
  • 在 GIN 索引并行构建中使用正确的排序函数。
  • 修复大于 1GB 的表在增量备份中的错误处理。
  • 如果 WAL 不存在到检查点记录指示的 redo 点,则恢复过程将失败。
  • 修复 ALTER PUBLICATION 以确保事件触发器包含所有已设置的选项。
  • 多项复制槽初始化相关的修复。
  • 在逻辑复制并行 Worker 应用失败后不再推进复制槽位置,以防止订阅端丢失事务。
  • 修复 SQL/JSON 路径类型不匹配的错误报告。
  • 修复使用 LLVM 17 或更高版本时 JIT 编译函数内联的问题。
  • 新增服务器参数 file_extend_method,用于控制 posix_fallocate() 的使用。
  • 修复 psqlVACUUM 命令选项的 Tab 补全。
  • 修复 pg_dump 以优雅处理并发序列删除,并在调用用户明确缺少序列读取权限时报错。
  • 多项 amcheckbtree 检查方面的修复。
  • 避免 pg_stat_statementsIN 列表同时包含常量和非常量表达式时崩溃。

本次发布还将时区数据文件更新至 tzdata 2025c 版本,其中仅包含 1976 年前 Baja California 时间戳的历史数据变更。

升级

所有 PostgreSQL 更新版本都是累积性的。与其他小版本更新一样,用户无需转储和重新加载数据库或使用 pg_upgrade 来应用本次更新;只需关闭 PostgreSQL 并更新其二进制文件即可。

如果您在 ltree 列上有索引且未使用 libc 排序规则提供程序,在升级到最新版本后,必须对所有 ltree 列重建索引。您可以使用 REINDEX INDEX CONCURRENTLY 来最大程度减少对系统的影响。

跳过一个或多个更新版本的用户可能需要执行额外的更新后步骤;详情请参阅早期版本的发行说明。

更多详情请参阅发行说明

链接

如果您对本发布公告有任何更正或建议,请发送至 pgsql-www@lists.postgresql.org 公共邮件列表