Rapid7 的研究人员在 PostgreSQL 的交互式工具 psql 中发现了一个严重的 SQL 注入漏洞(CVE-2025-1094)。这个漏洞是在对 BeyondTrust 产品中另一个漏洞的利用情况进行调查时发现的,攻击者可利用该漏洞在受影响的系统上执行任意代码。
根据 Rapid7 的报告,CVE-2025-1094 源于 “一种错误的假设,即认为当攻击者控制的不可信输入已通过 PostgreSQL 的字符串转义例程被安全转义后,就无法被利用来成功实施 SQL 注入攻击”。然而,研究人员发现,当被转义的不可信输入被包含在由 psql 执行的 SQL 语句中时,在特定情况下,SQL 注入仍然是可能的。
该漏洞的产生源于 PostgreSQL 的字符串转义例程处理无效 UTF-8 字符的方式,与 psql 处理这些字符中无效字节序列的方式之间的相互作用。报告解释称:“由于 PostgreSQL 的字符串转义例程处理无效 UTF-8 字符的方式,再加上 psql 处理无效 UTF-8 字符中无效字节序列的方式,攻击者可以利用 CVE-2025-1094 来实施 SQL 注入。”
成功利用 CVE-2025-1094 漏洞可以通过利用 psql 运行元命令的能力来实现任意代码执行(ACE),元命令扩展了该工具的功能。具体来说,元命令允许执行操作系统的 shell 命令。报告警告称:“攻击者可以利用 CVE-2025-1094 来执行这个元命令,从而控制所执行的操作系统 shell 命令。”
在调查对 BeyondTrust 产品中未认证远程代码执行漏洞 CVE-2024-12356 的利用情况时,Rapid7 发现,要实现远程代码执行(RCE),利用 CVE-2025-1094 漏洞是必要的一步。尽管 BeyondTrust 在 2024 年 12 月修复了 CVE-2024-12356 漏洞,但直到 Rapid7 发现该问题之前,底层的 PostgreSQL 漏洞一直未得到解决。
PostgreSQL 17.3、16.7、15.11、14.16 和 13.19 之前的所有受支持版本都受到影响。该漏洞的 CVSS 3.1 基础评分为 8.1,表明其严重程度很高。
强烈建议 PostgreSQL 用户升级到最新的已修复版本以修复此漏洞。Rapid7 还在 AttackerKB 中发布了关于 CVE-2025-1094 的详细技术分析,以及它与 CVE-2024-12356 的关系,同时还提供了一个用于测试目的的 Metasploit 漏洞利用模块。
管理员应立即采取的措施:
1.立即将 PostgreSQL 升级到 17.3、16.7、15.11、14.16 或 13.19 版本。
2.仅将 psql 工具的访问权限限制给受信任的用户。
3.在 PostgreSQL 处理所有用户输入之前对其进行清理。
4.监控数据库活动日志,查找意外的 SQL 查询或 shell 命令执行情况。