PostgreSQL 18.4、17.10、16.14、15.18 和 14.23 发布!

发布于 2026-05-14,PostgreSQL Global Development Group
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 未检查 multirange schema 的 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 服务器的多处功能在处理某些输入时可能发生整数回绕,导致分配的内存空间不足并发生越界写入,最终引发段错误(segmentation fault)。受影响版本为 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。

PostgreSQL 的 timeofday() 函数存在可被外部控制的格式化字符串,攻击者可通过构造的时区名称(timezone zone)读取服务器内存的部分内容。受影响版本为 PostgreSQL 18.4、17.10、16.14、15.18、14.23 之前的版本。

PostgreSQL 项目感谢 Xint Code 报告该问题。

CVE-2026-6475:PostgreSQL pg_basebackuppg_rewind 可被源端超级用户利用以覆盖无关文件

CVSS v3.1 基础分:8.8

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

在 PostgreSQL pg_basebackup 的 plain 格式以及 pg_rewind 中对符号链接(symlink)的跟随,可能允许源端超级用户覆盖本地文件(例如 /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。

PostgreSQL 的 pg_createsubscriber 存在 SQL 注入问题,攻击者若拥有 pg_create_subscription 权限,可能以超级用户身份执行任意 SQL。该攻击会在下一次运行 pg_createsubscriber 时生效。在 PostgreSQL 17 与 18 主版本中,受影响的是 PostgreSQL 18.4 与 17.10 之前的小版本;PostgreSQL 17 之前的版本不受影响。

PostgreSQL 项目感谢 Yu Kunpeng 报告该问题。

CVE-2026-6477:PostgreSQL libpq 的 lo_* 函数可让服务器端超级用户覆盖客户端栈内存

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

PostgreSQL libpqlo_export()lo_read()lo_lseek64()lo_tell64() 等函数内部使用了本质上危险的 PQfn(..., result_is_int=0, ...)。该用法会把由服务器端决定、长度任意的数据写入到大小未明确约束的缓冲区中,类似于 gets()。由于 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() 存在缓冲区越界读取:当其接收长度不匹配的数组值时,查询规划可能读取某个数组的末尾之外的数据,从而使表维护者能够推断该数组末尾之后的内存值。在 PostgreSQL 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 时生效。在 PostgreSQL 16、17、18 主版本中,受影响的是 PostgreSQL 18.4、17.10、16.14 之前的小版本;PostgreSQL 16 之前的版本不受影响。

PostgreSQL 项目感谢 Pavel Kohout、Aisle Research 报告该问题。

更新

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

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

更多详情请查阅 发布说明

链接

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