PostgreSQL 18.4 和 17.10 版本修复了 11 个 CVE

Lobsters Hottest 新闻

摘要

PostgreSQL 已发布针对版本 18.4、17.10、16.14、15.18 和 14.23 的安全更新,修复了 11 个 CVE 和超过 60 个错误。值得注意的修复包括 CVE-2026-6473(整数回绕,CVSS 8.8)和 CVE-2026-6475(符号链接覆盖,CVSS 8.8)。

<p><a href="https://lobste.rs/s/pegkgv/postgresql_18_4_17_10_closing_11_cves">评论</a></p>
查看原文
查看缓存全文

缓存时间: 2026/05/14 20:34

# 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/ 发布于 **2026-05-14**,由 PostgreSQL 全球开发组发布 PostgreSQL 项目安全 PostgreSQL 全球开发组已发布所有受支持的 PostgreSQL 版本的更新,包括 18.4、17.10、16.14、15.18 和 14.23。此版本修复了过去几个月报告的 11 个安全漏洞和 60 多个错误。 如需完整变更列表,请查阅发布说明 (https://www.postgresql.org/docs/release/)。 ## PostgreSQL 14 终止支持通知 PostgreSQL 14 将于 2026 年 11 月 12 日停止接收修复。如果您在生产环境中运行 PostgreSQL 14,我们建议您计划升级到更新且受支持的 PostgreSQL 版本。请参阅我们的版本策略 (https://www.postgresql.org/support/versioning/) 了解更多信息。 ## 安全问题 ### CVE-2026-6472 (https://www.postgresql.org/support/security/CVE-2026-6472/):PostgreSQL 的 `CREATE TYPE` 未检查 `multirange` 模式的 `CREATE` 权限 CVSS v3.1 基础评分:5.4 (https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator?version=3.1&vector=AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N) 受影响的支持版本: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 (https://www.postgresql.org/support/security/CVE-2026-6473/):PostgreSQL 服务器因整数回绕导致分配空间不足 CVSS v3.1 基础评分:8.8 (https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator?version=3.1&vector=AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H) 受影响的支持版本: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 (https://www.postgresql.org/support/security/CVE-2026-6474/):PostgreSQL 的 `timeofday()` 可泄露服务器内存部分内容 CVSS v3.1 基础评分:4.3 (https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator?version=3.1&vector=AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N) 受影响的支持版本:14 - 18。 PostgreSQL 的 `timeofday()` 函数中存在外部控制的格式字符串,允许攻击者通过精心构造的时区检索服务器内存的部分内容。受影响的版本包括 PostgreSQL 18.4、17.10、16.14、15.18 和 14.23 之前的版本。 PostgreSQL 项目感谢 Xint Code 报告此问题。 ### CVE-2026-6475 (https://www.postgresql.org/support/security/CVE-2026-6475/):PostgreSQL 的 `pg_basebackup` 和 `pg_rewind` 可覆盖源超级用户选择的不相关文件 CVSS v3.1 基础评分:8.8 (https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator?version=3.1&vector=AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H) 受影响的支持版本:14 - 18。 PostgreSQL 的 `pg_basebackup`(plain 格式)和 `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 (https://www.postgresql.org/support/security/CVE-2026-6476/):PostgreSQL 的 `pg_createsubscriber` 允许通过订阅名称进行 SQL 注入 CVSS v3.1 基础评分:7.2 (https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator?version=3.1&vector=AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H) 受影响的支持版本:17 - 18。 PostgreSQL 的 `pg_createsubscriber` 中存在 SQL 注入漏洞,允许拥有 `pg_create_subscription` 权限的攻击者以超级用户身份执行任意 SQL。该攻击在 `pg_createsubscriber` 下次运行时生效。在主要版本 17 和 18 中,PostgreSQL 18.4 和 17.10 之前的次要版本受影响。PostgreSQL 17 之前的版本不受影响。 PostgreSQL 项目感谢 Yu Kunpeng 报告此问题。 ### CVE-2026-6477 (https://www.postgresql.org/support/security/CVE-2026-6477/):PostgreSQL 的 `libpq` 中 lo_* 函数允许服务器超级用户覆盖客户端栈内存 CVSS v3.1 基础评分:8.8 (https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator?version=3.1&vector=AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H) 受影响的支持版本: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 (https://www.postgresql.org/support/security/CVE-2026-6478/):PostgreSQL 通过隐蔽计时信道泄露 MD5 哈希密码 CVSS v3.1 基础评分:6.5 (https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator?version=3.1&vector=AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N) 受影响的支持版本: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 (https://www.postgresql.org/support/security/CVE-2026-6479/):PostgreSQL 的 SSL/GSS 初始化因不受控制的递归导致拒绝服务 CVSS v3.1 基础评分:7.5 (https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator?version=3.1&vector=AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H) 受影响的支持版本: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 (https://www.postgresql.org/support/security/CVE-2026-6575/):PostgreSQL 的 `pg_restore_attribute_stats` 接受可导致查询计划读取超过统计数组末尾的值 CVSS v3.1 基础评分:4.3 (https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator?version=3.1&vector=AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N) 受影响的支持版本:18。 PostgreSQL 函数 `pg_restore_attribute_stats()` 中存在缓冲区过读取漏洞,接受长度不匹配的数组值,导致查询计划读取超过一个数组的末尾。这使得表维护者能够推断出该数组末尾之后的内存值。在主要版本 18 中,PostgreSQL 18.4 之前的次要版本受影响。PostgreSQL 18 之前的版本不受影响。 PostgreSQL 项目感谢 Jeroen Gui 报告此问题。 ### CVE-2026-6637 (https://www.postgresql.org/support/security/CVE-2026-6637/):PostgreSQL 的 `refint` 允许栈缓冲区溢出和 SQL 注入 CVSS v3.1 基础评分:8.8 (https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator?version=3.1&vector=AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H) 受影响的支持版本:14 - 18。 PostgreSQL 模块 `refint` 中存在栈缓冲区溢出,允许无权限的数据库用户以运行数据库的操作系统用户身份执行任意代码。如果应用程序将用户控制的列声明为 `refint` 级联主键并允许用户控制对该列的更新,则存在另一种攻击。在这种情况下,SQL 注入允许主键更新值的提供者以执行主键更新的数据库用户身份执行任意 SQL。受影响的版本包括 PostgreSQL 18.4、17.10、16.14、15.18 和 14.23 之前的版本。 PostgreSQL 项目感谢 Nikolay Samokhvalov 报告此问题。 ### CVE-2026-6638 (https://www.postgresql.org/support/security/CVE-2026-6638/):PostgreSQL 的 `REFRESH PUBLICATION` 允许通过表名进行 SQL 注入 CVSS v3.1 基础评分:3.7 (https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator?version=3.1&vector=AV:N/AC:H/PR:L/UI:R/S:U/C:L/I:L/A:N) 受影响的支持版本: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` 在“可重复读”或“可序列化”隔离模式 (https://www.postgresql.org/docs/current/transaction-iso.html) 中遇到并发更新的元组时,报告序列化失败。 - 修复了源表存在一个或多个已删除列时 `CREATE TABLE ... LIKE ... INCLUDING STATISTICS` 的问题。 - 修复了 `WITHOUT OVERLAPS` 以允许使用域。 - 禁止通过 `multirange` 使组合类型成为自身的成员。 - 修复了 `array_agg(anyarray)` 并行执行时偶尔出现不正确结果的问题。 - 防止增量备份恢复期间的膨胀。 - 防止卡住的逻辑复制槽同步工作者进程阻塞备用服务器提升。 - 使 `pg_aios` 系统视图的 `pid` 列在条目没有拥有进程时显示 `NULL` 而不是 `0`。 - 修复了复制活动期间 `pg_stat_replication` 显示 `NULL` 延迟的问题。 - 正确显示用于 `GROUP BY` 的 JOIN 别名变量。 - 如果启动进程失败,在退出 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 并更新其二进制文件即可。 跳过一个或多个更新版本的用户可能需要执行额外的更新后步骤;详情请参阅早期版本的发布说明。 如需更多详细信息,请参阅发布说明 (https://www.postgresql.org/docs/release/)。 ## 链接 - 下载 (https://www.postgresql.org/download/) - 发布说明 (https://www.postgresql.org/docs/release/) - 安全 (https://www.postgresql.org/support/security/) - 版本策略 (https://www.postgresql.org/support/versioning/) - 提交错误 (https://www.postgresql.org/account/submitbug/) - 捐赠 (https://www.postgresql.org/about/donate/) 如果您对此发布公告有任何更正或建议,请发送至 *[email protected]* 公共邮件列表 (https://www.postgresql.org/list/)。

相似文章

扩展PostgreSQL以支持8亿ChatGPT用户

OpenAI Blog

OpenAI分享了扩展PostgreSQL以支持8亿ChatGPT用户及每秒数百万查询的技术见解,采用了单主架构搭配50个只读副本,同时通过分片和优化策略管理写入密集型工作负载带来的挑战。

使用 Postgres 作为作业队列的潜在后果

Lobsters Hottest

文章分析了使用 PostgreSQL 作为作业队列的可扩展性限制,特别强调了高并发下 MultiXact SLRU 争用导致的性能瓶颈。文章解释了为什么这种架构在开发环境中表现良好,但在生产环境中却会失败,并建议考虑替代方案。