CVE-2025–1094:PostgreSQL SQL 注入漏洞
Ajay Monga 撰稿 | 阅读时间 2 分钟 · 2025年2月19日
CVE-2025–1094 是一个影响 PostgreSQL 的高严重性 SQL 注入漏洞,由 Rapid7 研究员 Stephen Fewer 发现,已于 2025 年 2 月 13 日发布补丁。以下是详细分析:
漏洞概述
- 根本原因:PostgreSQL 的 libpq 函数(
PQescapeLiteral()、PQescapeIdentifier()、PQescapeString()和PQescapeStringConn())中对引号语法的中和处理不当,在特定场景下允许 SQL 注入。 - 可利用条件:
- 当这些函数转义后的输入被用于构建
psql(PostgreSQL 的交互式终端)命令时。 - 当命令行参数在编码不匹配(
client_encoding=BIG5与server_encoding=EUC_TW或MULE_INTERNAL)的情况下被处理时。
- 当这些函数转义后的输入被用于构建
影响
- 任意代码执行:攻击者可利用 SQL 注入,通过
psql的元命令(例如,\!后跟 shell 命令)来执行操作系统命令。 - 任意 SQL 执行:可注入恶意 SQL 语句来操纵数据库。
受影响版本
- PostgreSQL 17.3 之前的所有版本
- PostgreSQL 16.7 之前的所有版本
- PostgreSQL 15.11 之前的所有版本
- PostgreSQL 14.16 之前的所有版本
- PostgreSQL 13.19 之前的所有版本
修复方案
- 升级 PostgreSQL:为受影响版本应用补丁。
缓解措施与最佳实践
- 验证 UTF-8 编码:在将输入传递给
psql之前,拒绝包含无效 UTF-8 序列的输入。 - 使用参数化查询:
- 使用参数化查询或 ORM 框架,以尽量减少使用原始输入直接调用
psql。
- 使用参数化查询或 ORM 框架,以尽量减少使用原始输入直接调用
- 限制 psql 权限:
- 限制 PostgreSQL 用户在操作系统级别的权限,以降低远程代码执行的影响。
- 监控日志:
- 对编码为“UTF8”的重复无效字节序列错误进行标记,这可能表明存在利用尝试。
参考链接
- https://www.postgresql.org/support/security/CVE-2025-1094/
- https://nvd.nist.gov/vuln/detail/CVE-2025-1094
- https://access.redhat.com/security/cve/cve-2025-1094
- https://www.enterprisedb.com/docs/security/assessments/cve-2025-1094/
CSD0tFqvECLokhw9aBeRqssWQ75ViXVB79ufPGYapCBmTTqptmBktuS4qlMHC5z2RtLM3rQDAOBETzH2xNmUqJOYNVxjtoTZOl8rfvIy/5DBtr/L8WdBcA22tdKxvFoKwgTx1fERE0aFMJ2076FZXw==
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)