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

admin 2026-10-17 08:30:17 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

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全系列中招" 网络安全文章

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

PostgreSQL于8月13日发布安全更新,修复20多个CVE,其中5个堆溢出漏洞可导致RCE。最值得关注的是CVE-2026-14669,to_char函数处理时区字符串时存在堆溢出,影响14至18全系列版本。其他关键漏洞涉及pg_dump、pg_stat_statements等组件。建议立即升级到最新小版本,并单独升级pg\\_dump工具,多租户环境需限制时区设置,同时关注衍生项目的补丁发布。
云原生未授权系列之etcd未授权:从读到Secret到接管集群" 网络安全文章

云原生未授权系列之etcd未授权:从读到Secret到接管集群"

本文分析了etcd未授权访问漏洞在Kubernetes集群中的危害与利用条件。etcd作为集群状态存储核心,若因运维错误关闭客户端证书认证并暴露2379端口,攻击者无需凭证即可读取全部Secret,包括高权限ServiceAccount的JWTToken。利用该Token可访问kube-apiserver创建特权Pod逃逸至宿主机,最终读取admin.conf接管集群。默认配置安全,漏洞源于错误配置叠加,纵深防御可阻断攻击链。
天狐工具箱框架V4.0-轻便版-二改介绍" 网络安全文章

天狐工具箱框架V4.0-轻便版-二改介绍"

本文介绍基于天狐渗透工具箱二次改造的轻便版框架。核心改动聚焦界面与交互优化,涵盖卡片缩放、双击启动、参数前后置分离及命令预览。同时增强拼音与模糊搜索排序,启动速度提升至一秒内。该框架不含运行环境,需自备依赖,适合需定制化管理的安全人员参考使用。
手机验证码是你最后一道门,谁要都不能给" 网络安全文章

手机验证码是你最后一道门,谁要都不能给"

本文强调手机验证码是账户安全的最后一道门,任何电话、短信或聊天中要求提供验证码的行为100%是诈骗。骗子通过扮演客服、警察等身份制造压力,诱骗用户主动交出验证码,从而盗取账户资金。核心防范铁律是验证码谁要都不能给,遇到索要验证码立即挂断并自行核实。建议向家中老人反复强调这一原则,并保持冷静、不轻信权威。
评论:0   参与:  0