PostgreSQL一次性修了20多个CVE:to_char堆溢出可RCE,14-18全系列中招

admin 2026-08-21 07:00:57 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: PostgreSQL于8月13日发布安全更新,修复20多个CVE,其中5个堆溢出漏洞可导致RCE。最值得关注的是CVE-2026-14669,tochar函数处理时区字符串时存在堆溢出,影响14至18全系列版本。其他关键漏洞涉及pgdump、pgstatstatements等组件。建议立即升级到最新小版本,并单独升级pg_dump工具,多租户环境需限制时区设置,同时关注衍生项目的补丁发布。 综合评分: 89 文章分类: 漏洞分析,安全工具,解决方案,数据安全,应用安全


cover_image

PostgreSQL一次性修了20多个CVE:to_char堆溢出可RCE,14-18全系列中招

零日手记 零日手记

随笔漫记安全路

2026年8月18日 08:46 北京

在小说阅读器读本章

去阅读

8月13日,PostgreSQL发了一波安全更新——18.6、17.11、16.15、15.19、14.24同步发布,19 Beta 3也跟着出了。

这一波修了20多个CVE,其中至少5个是堆缓冲区溢出,标注”executes arbitrary code”。最值得关注的是CVE-2026-14669——to_char()函数处理时区字符串时的堆溢出,14到18全系列版本受影响。


CVE-2026-14669:to_char堆溢出

to_char()是PostgreSQL里格式化输出的函数,日常SQL里经常用。漏洞出在时区缩写的处理上。

源码位置:src/backend/utils/adt/formatting.c

有问题的代码:

strcpy(s, tmtcTzn(in));

直接用strcpy把时区缩写复制到输出缓冲区,没有长度校验。如果时区缩写超长,就会溢出堆缓冲区。

修复commit(3d724bf)做的事很简单:复制之前先检查长度,超长的截断。

利用条件:攻击者需要能控制to_char()的时区输入。在多租户数据库环境或允许用户自定义时区设置的场景下,这个条件可以满足。堆溢出理论上可达RCE,但实际利用难度取决于堆布局和缓解机制(ASLR等)。


不只是to_char:5个可RCE的堆溢出

8月13日这批更新里,标注”executes arbitrary code”的CVE至少有5个:

| CVE | 函数/组件 | 类型 | | — | — | — | | CVE-2026-14669 | to_char() 时区处理 | 堆溢出→RCE | | CVE-2026-19385 | pg_dump | 堆溢出→RCE | | CVE-2026-14676 | pg_stat_statements | 堆溢出→RCE | | CVE-2026-14670 | plperl tied object | 堆溢出→RCE | | CVE-2026-14663 | regexp 正则引擎 | 堆溢出→RCE |

pg_dump那个尤其值得注意——pg_dump是备份工具,通常由DBA或cron job以较高权限运行。如果备份了一个被植入恶意数据的数据库,pg_dump在处理时触发堆溢出,就是权限提升。

还有几个没标RCE但同样危险的:

  • CVE-2026-14678:pg_trgm picksplit读取越界
  • CVE-2026-14677:栈缓冲区溢出,写入0x0和0x1到服务器内存
  • CVE-2026-18024:ascii()函数读取越界

影响范围

| 大版本 | 受影响 | 修复版本 | | — | — | — | | PostgreSQL 14 | < 14.24 | 14.24 | | PostgreSQL 15 | < 15.19 | 15.19 | | PostgreSQL 16 | < 16.15 | 16.15 | | PostgreSQL 17 | < 17.11 | 17.11 | | PostgreSQL 18 | < 18.5 | 18.5(注:18.6也已发布) |

14到18,五年的大版本全中。pg_stat_statements那个只影响14/15/16/18(17不在列表里),其余的基本全系列。


修复建议

  1. 立即升级到最新小版本:14.24、15.19、16.15、17.11、18.5+,小版本升级通常兼容
  2. pg_dump要单独升级——即使数据库升级了,系统里残留的旧版pg_dump仍是风险点
  3. 多租户环境限制用户自定义时区设置
  4. 检查pg_stat_statements扩展是否启用——很多生产环境默认装了但没人在意
  5. 关注基于PostgreSQL的衍生项目——Apache Cloudberry已确认受CVE-2026-14669影响,Greenplum、Citus、Amazon Aurora PostgreSQL、Azure Database for PostgreSQL等都需要跟进各自的补丁节奏

最后一条容易被忽略。PostgreSQL的衍生生态很大,上游修了不代表下游同步了。如果你的数据库是云托管版或衍生版,等厂商公告。


参考链接

  • PostgreSQL安全页面:postgresql.org/support/security/
  • CVE-2026-14669详情:postgresql.org/support/security/CVE-2026-14669/
  • 修复commit:github.com/postgres/postgres/commit/3d724bf4fde67a2931733a5143b7d6c12b23990c
  • 14.24发布说明:postgresql.org/docs/release/14.24/

免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:随笔漫记安全路 零日手记 零日手记《PostgreSQL一次性修了20多个CVE:to_char堆溢出可RCE,14-18全系列中招》

评论:0   参与:  0