数据库安全公司 Cyera 于 9 月 1 日发布技术分析,披露存在于 PostgreSQL 十二年的逻辑解码漏洞 CVE-2026-6471,代号 PostGREShell。持有 REPLICATION 属性的非超级用户账户可将服务器进程加载任意共享库,以数据库服务器的操作系统账户身份执行代码,随后永久提权为 PostgreSQL 超级用户并部署持久化后门。官方补丁已于 8 月 13 日随各分支安全版本发布。
事件概述
漏洞根源可追溯至 PostgreSQL 9.4 引入逻辑解码功能的 2014 年。受影响版本覆盖自 9.4 起至 18 的全部版本,修复版本为 18.6、17.11、16.15、15.19、14.24。REPLICATION 权限在日常运维中普遍发放给备份工具、备库、CDC 数据管道与监控系统,常被视作低风险的”备份凭证”。官方 CVSS 评分为 7.2,将所需权限定为 High。
技术细节
逻辑复制客户端在创建复制槽时需要指定一个输出插件,PostgreSQL 原本限制非超级用户只能从管理员控制的目录加载插件,但复制协议路径上的插件名称未做校验:解析器接受双引号插件名中的斜杠、反斜杠与 ../ 路径遍历,完整的文件系统路径会原样传递给动态加载器 dlopen()。攻击者在 Windows 上可通过 UNC 路径让服务器从攻击者控制的 SMB 共享拉取恶意 DLL;Linux 与 macOS 需开启 NFS 自动挂载,其余场景需先在服务器磁盘落一个文件。加载的代码与 PostgreSQL 同地址空间运行,可直接改写 pg_authid 目录将复制账户提升为超级用户,Cyera 的演示插件还实现了多重持久化机制。
影响评估
逻辑复制已成为生产环境标配,漏洞路径几乎存在于所有 PostgreSQL 部署中。一旦利用成功,攻击者可读取任意数据库全部数据、执行操作系统命令、读取私钥,并以数据库服务器为跳板横向移动。托管数据库服务的补丁节奏通常滞后于上游,云上用户需主动核实服务商的修复状态。目前尚无在野利用的确证报告,但技术细节已完全公开,武器化只是时间问题。
修复建议
- 尽快升级至 18.6、17.11、16.15、15.19 或 14.24;PostgreSQL 14 分支社区支持将于 2026 年 11 月终止,旧版本需规划迁移。
- 升级前盘点复制槽插件:
SELECT DISTINCT plugin FROM pg_replication_slots WHERE plugin IS NOT NULL; - 审计 REPLICATION 权限账户:
SELECT rolname FROM pg_roles WHERE rolreplication = true;移除不再需要的权限并轮换相关凭证。 - 新版引入 output_plugin_libraries 白名单参数,默认仅允许 pgoutput 与 test_decoding;使用 wal2json 等第三方插件的环境需显式加入白名单后重载配置,否则逻辑复制将拒绝启动。
- 检测规则:关注日志中输出插件加载失败的异常路径、postgres 系统账户的异常进程与文件创建、非管理员角色的 SUPERUSER 变更。