DeepSeek总结的PostgreSQL 18.4, 17.10, 16.14, 15.18 和 14.23 发布
来源:https://www.postgresql.org/about/news/postgresql-184-1710-1614-1518-and-1423-released-3297/
PostgreSQL 18.4, 17.10, 16.14, 15.18 和 14.23 发布!
发布于2026-05-14,PostgreSQL 全球开发组
PostgreSQL 项目 安全
PostgreSQL 全球开发组已更新所有受支持的 PostgreSQL 版本,包括 18.4、17.10、16.14、15.18 和 14.23。此版本修复了过去几个月报告的 11 个安全漏洞和 60 多个错误。
有关完整的更改列表,请查看发行说明。
PostgreSQL 14 生命周期终止通知
PostgreSQL 14 将于 2026 年 11 月 12 日停止接收修复。如果您在生产环境中运行 PostgreSQL 14,我们建议您计划升级到更新、受支持的 PostgreSQL 版本。有关更多信息,请参阅我们的版本控制政策。
安全问题
CVE-2026-6472:PostgreSQL CREATE TYPE 未检查多范围模式 CREATE 权限
- CVSS v3.1 基础分数:5.4
- 受影响的受支持版本:14 - 18
PostgreSQL CREATE TYPE 中缺失授权,允许对象创建者劫持其他使用 search_path 查找用户定义类型(包括扩展定义类型)的查询。也就是说,受害者将执行攻击者选择的任意 SQL 函数。PostgreSQL 18.4、17.10、16.14、15.18 和 14.23 之前的版本受影响。
PostgreSQL 项目感谢 Jelte Fennema-Nio 报告此问题。
CVE-2026-6473:PostgreSQL 服务器通过整数回绕导致内存分配不足
- CVSS v3.1 基础分数:8.8
- 受影响的受支持版本:14 - 18
多个 PostgreSQL 服务器特性中的整数回绕允许应用程序输入提供者导致服务器分配内存不足并越界写入。这会导致段错误。PostgreSQL 18.4、17.10、16.14、15.18 和 14.23 之前的版本受影响。
PostgreSQL 项目感谢 Anemone、A1ex、Xint Code、Jihe Wang、Jingzhou Fu、Pavel Kohout、Petr Simecek、www.aisle.com、Calif.io 的 Bruce Dang 以及 Sven Klemm 报告此问题。
CVE-2026-6474:PostgreSQL timeofday() 可能泄露部分服务器内存
- CVSS v3.1 基础分数:4.3
- 受影响的受支持版本:14 - 18
PostgreSQLtimeofday()函数中受外部控制的格式字符串允许攻击者通过精心构造的时区检索部分服务器内存。PostgreSQL 18.4、17.10、16.14、15.18 和 14.23 之前的版本受影响。
PostgreSQL 项目感谢 Xint Code 报告此问题。
CVE-2026-6475:PostgreSQL pg_basebackup 和 pg_rewind 可覆盖源端超级用户选择的无关文件
- CVSS v3.1 基础分数:8.8
- 受影响的受支持版本:14 - 18
PostgreSQLpg_basebackup普通格式和pg_rewind中的符号链接跟随允许源端超级用户覆盖本地文件,例如/var/lib/postgres/.bashrc,从而劫持操作系统账户。由于shared_preload_libraries等特性,在这些命令之后启动服务器仍然隐式信任源端超级用户。因此,仅当在这些命令和服务器启动之间采取了相关操作(例如将文件移动到不同的虚拟机或对虚拟机进行快照)时,该攻击才具有实际影响。PostgreSQL 18.4、17.10、16.14、15.18 和 14.23 之前的版本受影响。
PostgreSQL 项目感谢 Valery Gubanov、腾讯玄武实验室 XlabAI 团队、Atuin 自动漏洞发现引擎、Zhanpeng Liu (pkugenuine(at)gmail(dot)com)、Guannan Wang (wgnbuaa(at)gmail(dot)com) 和 Guancheng Li (lgcpku(at)gmail(dot)com) 报告此问题。
CVE-2026-6476:PostgreSQL pg_createsubscriber 允许通过订阅名称进行 SQL 注入
- CVSS v3.1 基础分数:7.2
- 受影响的受支持版本:17 - 18
PostgreSQLpg_createsubscriber中的 SQL 注入允许具有pg_create_subscription权限的攻击者以超级用户身份执行任意 SQL。该攻击在下次运行pg_createsubscriber时生效。在主要版本 17 和 18 中,PostgreSQL 18.4 和 17.10 之前的次要版本受影响。PostgreSQL 17 之前的版本不受影响。
PostgreSQL 项目感谢 Yu Kunpeng 报告此问题。
CVE-2026-6477:PostgreSQL libpq lo_* 函数让服务器超级用户覆盖客户端堆栈内存
- CVSS v3.1 基础分数:8.8
- 受影响的受支持版本:14 - 18
在 PostgreSQL libpq 的lo_export()、lo_read()、lo_lseek64()和lo_tell64()函数中使用固有危险的函数PQfn(..., result_is_int=0, ...),允许服务器超级用户用任意大的响应覆盖客户端堆栈缓冲区。像gets()一样,PQfn(..., result_is_int=0, ...)将任意长度、由服务器决定的数据存储到未指定大小的缓冲区中。因为 psql 中的\lo_export命令和pg_dump都会调用lo_read(),所以服务器超级用户可以覆盖pg_dump或 psql 的堆栈内存。PostgreSQL 18.4、17.10、16.14、15.18 和 14.23 之前的版本受影响。
PostgreSQL 项目感谢 Yu Kunpeng 和 Martin Heistermann 报告此问题。
CVE-2026-6478:PostgreSQL 通过隐蔽定时信道泄露 MD5 哈希密码
- CVSS v3.1 基础分数:6.5
- 受影响的受支持版本:14 - 18
PostgreSQL 身份验证中 MD5 哈希密码比较的隐蔽定时信道允许攻击者恢复足以进行身份验证的用户凭据。这不会影响scram-sha-256密码,这是所有受支持版本中的默认设置。但是,当前数据库可能包含源自 PostgreSQL 13 或更早版本升级的 MD5 哈希密码。PostgreSQL 18.4、17.10、16.14、15.18 和 14.23 之前的版本受影响。
PostgreSQL 项目感谢 Joe Conway 报告此问题。
CVE-2026-6479:PostgreSQL SSL/GSS 初始化通过不受控制的递归导致拒绝服务
- CVSS v3.1 基础分数:7.5
- 受影响的受支持版本:14 - 18
PostgreSQL SSL 和 GSS 协商中不受控制的递归允许能够连接到 PostgreSQL AF_UNIX 套接字的攻击者实现持续的拒绝服务。如果 SSL 和 GSS 都被禁用,攻击者可以通过访问 PostgreSQL TCP 套接字执行相同操作。PostgreSQL 18.4、17.10、16.14、15.18 和 14.23 之前的版本受影响。
PostgreSQL 项目感谢 Calif.io 与 Claude 和 Anthropic Research 合作报告此问题。
CVE-2026-6575:PostgreSQL pg_restore_attribute_stats 接受导致查询规划读取超出统计数组末尾的值
- CVSS v3.1 基础分数:4.3
- 受影响的受支持版本:18
PostgreSQL 函数pg_restore_attribute_stats()中的缓冲区过度读取接受长度不匹配的数组值,这导致查询规划读取超出其中一个数组的末尾。这允许表维护者推断该数组末尾之后的内存值。在主要版本 18 中,PostgreSQL 18.4 之前的次要版本受影响。PostgreSQL 18 之前的版本不受影响。
PostgreSQL 项目感谢 Jeroen Gui 报告此问题。
CVE-2026-6637:PostgreSQL refint 允许堆栈缓冲区溢出和 SQL 注入
- CVSS v3.1 基础分数:8.8
- 受影响的受支持版本:14 - 18
PostgreSQL 模块refint中的堆栈缓冲区溢出允许无权限的数据库用户以运行数据库的操作系统用户身份执行任意代码。如果应用程序将用户控制的列声明为refint级联主键并方便对该列进行用户控制的更新,则可能发生另一种攻击。在这种情况下,SQL 注入允许主键更新值提供者以执行主键更新的数据库用户身份执行任意 SQL。PostgreSQL 18.4、17.10、16.14、15.18 和 14.23 之前的版本受影响。
PostgreSQL 项目感谢 Nikolay Samokhvalov 报告此问题。
CVE-2026-6638:PostgreSQL REFRESH PUBLICATION 允许通过表名进行 SQL 注入
- CVSS v3.1 基础分数:3.7
- 受影响的受支持版本:16 - 18
PostgreSQL 逻辑复制ALTER SUBSCRIPTION ... REFRESH PUBLICATION中的 SQL 注入允许订阅表创建者使用订阅的发布端凭据执行任意 SQL。该攻击在下次REFRESH PUBLICATION时生效。在主要版本 16、17 和 18 中,PostgreSQL 18.4、17.10 和 16.14 之前的次要版本受影响。PostgreSQL 16 之前的版本不受影响。
PostgreSQL 项目感谢 Pavel Kohout、Aisle Research 报告此问题。
错误修复和改进
此更新修复了过去几个月报告的 60 多个错误。下面列出的问题影响 PostgreSQL 18。其中一些问题也可能影响其他受支持的 PostgreSQL 版本。
- 修复了在唯一索引上使用非确定性排序规则时可能返回不正确结果的查询。
- 修复了外键触发器可延迟性的丢失。以前,定义为
DEFERRABLE INITIALLY DEFERRED的外键在设置为NOT ENFORCED状态然后再设置回ENFORCED后会表现为NOT DEFERRABLE。如果您有此问题的外键,安装此更新后,可以通过将其设置为NOT ENFORCED然后再设置回ENFORCED来修复它。 - 改进了规划器在更多情况下应用分区剪枝的能力。
- 修复了自连接移除,以处理仅包含布尔列(例如
ON t1.boolcol)的连接子句。 - 对虚拟生成列进行了多项修复,包括确保当
EXCLUDED引用虚拟生成列时INSERT ... ON CONFLICT能正常工作。 - 当
MERGE在"可重复读"或"可串行化"隔离模式下遇到并发更新的元组时,报告串行化失败。 - 修复了源表有一个或多个已删除列时
CREATE TABLE ... LIKE ... INCLUDING STATISTICS的情况。 - 修复
WITHOUT OVERLAPS以允许域。 - 禁止通过多范围使复合类型成为其自身的成员。
- 修复了
array_agg(anyarray)并行执行时有时结果不正确的问题。 - 防止恢复增量备份期间发生膨胀。
- 防止卡住的逻辑复制槽同步工作进程阻塞备用的提升。
- 使
pg_aios系统视图的pid列在没有所属进程时显示 NULL 而不是 0。 - 修复了
pg_stat_replication在复制处于活动状态时仍显示 NULL 延迟的情况。 - 正确显示用于
GROUP BY的连接别名变量。 - 如果启动进程失败,在退出 postmaster 之前正确关闭其他子进程。
- 修复了可能导致跟随来自较旧次要版本主库的 WAL 的备用服务器陷入崩溃-重启循环的竞争条件。
- 当逻辑复制主动发布数据时,防止在 walsender 进程关闭时无限期等待。
- 确保在恢复期间持久化空闲空间映射更改。这可能会在备用服务器提升后对其性能产生影响。
- 修复了
pg_basebackup和pg_verifybackup中使用的备份解压和 tar 解析代码中的各种错误。 - 确保
pg_dumpall不会跳过具有悬空授权者 OID 的角色授权,恢复 PostgreSQL 16 之前的行为。如果源服务器是 PostgreSQL 16 或更高版本,则会发出关于缺少授权者的警告。 - 修复
pg_upgrade在连接到较旧源服务器时使用正确的协议版本。 - 修复了使用
RANGE_TABLE选项时pg_overexplain的输出。 - 修复了
postgres_fdw因过早清理失败连接而导致的崩溃。 - 此版本还将时区数据文件更新为 tzdata 2026b 版本,其中不列颠哥伦比亚(America/Vancouver)将从 2026 年 11 月起全年使用 UTC-07(实际上是永久夏令时)。此版本假设从那时起他们的 TZ 缩写将是 MST(尽管这可能会改变)。摩尔多瓦也进行了历史修正,自 2022 年以来一直使用欧盟夏令时转换时间。
更新
所有 PostgreSQL 更新版本都是累积性的。与其他次要版本一样,用户无需转储和重新加载数据库或使用pg_upgrade即可应用此更新版本;您只需停止 PostgreSQL 并更新其二进制文件即可。
跳过一个或多个更新版本的用户可能需要运行额外的更新后步骤;有关详细信息,请参阅早期版本的发行说明。
有关更多详细信息,请查看发行说明。
