CloudNativePG 社区发布所有受支持系列的维护更新:1.29.1 与 1.28.3。
这是一次高优先级发布:修复了关键漏洞 CVE-2026-44477(CloudNativePG 首个官方分配的 CVE,评级为严重/关键,CVSS v4 得分 9.4),同时也修补了依赖组件与 Go 运行时中的其他 CVE。
在可靠性方面,HA 故障切换路径上 3 个相互独立的问题已修复,包括:网络分区时标签保留导致写入可能被路由到已不再是主库的节点(#10409);节点不可达时未触发 failover(#10448);以及针对短暂 HTTP 端点失败导致的误触发 failover 的保护(#10445)。两条版本线还包含若干正确性与健壮性修复,完整清单请见发布说明。
所有用户都应立即升级。
此前 metrics exporter 连接 PostgreSQL 时使用 postgres 超级用户,然后通过 SET ROLE pg_monitor 降权。但这种降权并不充分:session_user 仍为 postgres,因此在该会话里执行的任何 SQL 都可以通过 RESET ROLE 恢复完整的超级用户权限,进而利用 COPY ... TO PROGRAM 在主库 Pod 内启动任意操作系统进程。
该根因存在两条彼此独立的可利用路径。第一条需要配置自定义指标查询,并在其中包含未限定 schema 的关系或函数引用;攻击可在一次抓取周期内完成(≤ 30 秒)。第二条甚至不需要任何自定义指标:官方自带的 pg_extensions 指标就足以让默认的 app 角色(由 bootstrap.initdb 自动创建)在完全“开箱即用”的部署上触发完整的权限提升链。综合影响是:从低权限数据库角色出发,在主库 Pod 内实现超级用户权限提升并执行任意 OS 命令。
修复方案引入了专用的 PostgreSQL 角色 cnpg_metrics_exporter,只授予 pg_monitor 所需权限,并通过 pg_ident.conf 使用 peer 认证进行映射(与 cnpg_pooler_pgbouncer 使用相同模式)。Exporter 现在以该角色连接,因此 RESET ROLE 不再具备提权效果。所有随附的监控查询也已通过显式限定 pg_catalog. 来加固(#10576)。
更完整的技术分析、利用路径、缓解措施与升级影响,请参阅 安全公告。
本次发布还纳入了:
github.com/jackc/pgx/v5 v5.9.2:修复 CVE-2026-33816(pgproto3 的内存安全问题)以及 GHSA-j88v-2chj-qfwx(简单协议下对美元引号字符串处理导致的 SQL 注入)。
Go 1.26.3 运行时:修复 crypto/x509、crypto/tls、net/http、net 等多个组件中的问题(CVE-2026-32280、CVE-2026-32281、CVE-2026-33810、CVE-2026-33811、CVE-2026-33814、CVE-2026-39825),并修复 cmd/go 在发布构建期间对模块校验和验证的 CVE-2026-42501。
可发现的 SBOM 与来源(provenance)证明(#10601):operator 镜像附带的证明现在遵循 OCI 1.1 Referrers 规范,可被标准镜像仓库工具与供应链扫描器自动发现。
感谢 Mehmet Ince(@mdisec)以负责任的方式披露 CVE-2026-44477,提供了对两条利用路径的详尽分析以及可工作的 PoC。
请根据你所使用的系列按对应指南升级:
对于包含副本集群(replica clusters)的部署,请先升级源端的主集群;更详细的升级顺序请参阅 安全公告。
完整变更列表请参阅发布说明:
欢迎 加入我们,一起塑造云原生 Postgres 的未来。
如果你正在生产环境使用 CloudNativePG,也可以考虑将你的组织加入 ADOPTERS,支持项目的持续发展与演进。
感谢你一直以来的支持!
CloudNativePG 是一个专为 PostgreSQL 工作负载设计的开源 Kubernetes Operator。它管理 PostgreSQL 集群的全生命周期,包括初始化、配置、高可用、连接路由,以及完善的备份与灾备机制。CloudNativePG 利用 PostgreSQL 原生流复制,在 Kubernetes 的标准模式下高效地把数据分布到不同的 Pod、节点和可用区,并以 Kubernetes 原生的方式实现副本的弹性扩缩容。该项目最初由 EDB 开发与支持,是 CNCF Sandbox 项目,也是该类别中唯一的 PostgreSQL Operator。