Lukas Fittl:Postgres 18.7 安全版本发布:CVE-2026-6460 及其他内存破坏问题的影响

Lukas Fittl:Postgres 18.7 安全版本发布:CVE-2026-6460 及其他内存破坏问题的影响

💡 原文英文,约2200词,阅读约需8分钟。
📝

内容提要

PostgreSQL发布14至18版安全更新,修复52个漏洞,涉及内存破坏、权限提升和客户端工具问题。能执行SQL的用户可能借此获取超级用户或操作系统权限,公开实例还面临拒绝服务风险。CVE-2026-6460的修复侵入性较强,可能破坏扩展并引发ABI不兼容,升级时须同步更新扩展并重启服务器。建议尽快升级。

🔎

延伸解读

漏洞利用门槛与主要风险

文章将52个CVE按攻击者所需条件分组。最严重的一类只需能执行任意SQL即可触发,例如调用ts_delete()等函数造成内存破坏,进而可能以运行PostgreSQL的操作系统用户身份执行代码。另一类需要能创建对象(包括默认允许的pg_temp临时对象),再诱使超级用户或同进程读取,从而提权。若应用存在SQL注入,风险会显著放大。

CVE-2026-6460修复为何特殊

该漏洞涉及复合类型,修复方式在次要版本中少见地具有侵入性:PostgreSQL引入新层来记录元组存储的类型版本,类型定义变更后旧元组会报错而非被误读。代价是ABI不兼容,部分扩展不能仅重新编译,还需修改代码,例如pgrx已发布适配版本,PostGIS在pg_upgrade时也有边缘情况需特别处理。

升级时的操作注意事项

由于存在ABI破坏,若只更新扩展包而未更新或未重启服务器,加载plpgsql等共享库时可能出现“undefined symbol”错误。文章指出PGDG Debian包默认会先停旧服务器再替换文件并启动,行为正确;RPM包在测试中可能先更新二进制再重启,存在短暂风险。使用Patroni或手动启动服务时行为不同,建议先在自身环境测试。

不要忽略客户端工具与特殊部署

除服务器外,客户端工具也有需修复的CVE。例如pg_restore在导入不可信归档时可能导致本地任意代码执行,因此打补丁时应同步更新客户端工具。公开端口上的实例还面临无需认证即可触发的拒绝服务风险。逻辑复制和postgres_fdw等场景中,若远端服务器不可信,也存在对应问题,相关部署应留意。

❓

Q&A

Postgres 18.7 等小版本更新修复了哪些安全问题?

修复了 52 个安全漏洞,主要包括内存破坏(堆溢出、释放后使用、类型混淆)和权限提升问题。攻击者若能在数据库中执行 SQL,可能借此获得操作系统用户权限或超级用户权限。此外,公开实例还面临拒绝服务风险。

CVE-2026-6460 的修复为什么可能破坏扩展?

该漏洞的修复引入了新的内部元组版本层,属于侵入性较强的 ABI 变更。部分扩展(如 pgrx、PostGIS)需要修改代码或特殊处理才能兼容,升级时须同步更新扩展并重启服务器,否则可能加载失败。

升级到 Postgres 18.7 时需要注意什么?

升级时需同时更新服务器和扩展,并重启服务器,避免因 ABI 不兼容导致共享库加载错误(如 undefined symbol)。建议在自有环境中测试升级流程,特别是使用 RPM 包或 Patroni 等工具时。

哪些用户最容易受到这些漏洞影响?

任何能执行 SQL 的用户(包括通过 SQL 注入)都可能利用漏洞提升权限或执行任意代码。托管服务提供商(如 Amazon RDS)的客户也可能受影响,因为客户通常没有完整 root 权限。

客户端工具也存在漏洞吗?

是的,部分 CVE 涉及客户端工具,例如 pg_restore 在导入不可信归档时可能导致本地任意代码执行。因此升级时也应更新客户端工具。

公开的 Postgres 实例面临什么特殊风险?

公开实例可能遭受拒绝服务攻击,因为取消请求的处理方式可能让未认证用户导致服务不可用。建议对公开实例采取防护措施。

🏷️

标签

➡️

继续阅读