CVE-2026-17351 (CVSS 9.0) - The fix for CVE-2026-12045 in pgAdmin 4 9.16 required the LLM-supplied query pas
CVE-2026-17351是pgAdmin 4 AI Assistant中的SQL注入绕过漏洞,CVSS 9.0。攻击者利用sqlparse与PostgreSQL解析差异可绕过只读事务保护,执行任意SQL,导致数据篡改甚至RCE。本文分析根因、攻击场景及修复方案。
CVE-2026-17351 (CVSS 9.0) - The fix for CVE-2026-12045 in pgAdmin 4 9.16 required the LLM-supplied query pas
📋 漏洞概述
pgAdmin 4 AI助手存在SQL注入绕过(CVE-2026-17351),利用sqlparse与PostgreSQL解析差异可执行任意SQL,导致写入或RCE。
📋 基础信息
| 受影响版本 | pgAdmin 4 9.16(修复CVE-2026-12045的版本中引入的绕过) |
| 漏洞类型 | SQL注入(输入验证不当) |
| CVSS | 9.0 · Critical |
| CVE | CVE-2026-17351 |
🔬 漏洞根因
pgAdmin 4 9.16为修复CVE-2026-12045,使用sqlparse验证AI助手工具传入的SQL是否恰好为一条非事务控制语句,并在BEGIN TRANSACTION READ ONLY包裹的事务中执行。但sqlparse对字符串字面量中的反斜杠转义规则与PostgreSQL默认的standard_conforming_strings=on不一致:PostgreSQL将反斜杠视作普通字符,而sqlparse认为它转义了后续引号,导致攻击者可以构造让sqlparse误判为单条SELECT的载荷,实际PostgreSQL执行多条语句,从而绕过只读事务限制。此外,候选修复试图使用psycopg的prepare=True强制扩展查询协议,但pgAdmin默认prepare_threshold为None,psycopg3实际回退到简单查询协议,修复无效。最终正确修复是在专用连接上设置prepare_threshold=0以强制扩展协议。
🎯 攻击场景
1. 前提条件:目标pgAdmin 4版本为9.16,AI Assistant已启用,且攻击者能通过数据库对象(如存储过程、视图、表数据、注释等)植入恶意载荷,使AI Assistant在读取相关内容后将其作为工具调用内容。2. 攻击者构造SQL载荷,例如:SELECT '\';COMMIT;CREATE TABLE pwn(x int);SELECT 1 --'。该载荷在sqlparse中解析为一条SELECT语句,绕过验证。3. AI Assistant调用execute_sql_query工具,将载荷发送给pgAdmin后端。4. pgAdmin在BEGIN TRANSACTION READ ONLY中执行该载荷,PostgreSQL实际解析为多条语句:先COMMIT结束只读事务,随后CREATE TABLE等写操作不再受只读限制,最后ROLLBACK因无活动事务成为no-op。5. 攻击者进一步可执行写操作、插入恶意数据、调用危险函数,甚至结合其他漏洞实现RCE(推测:若数据库用户具备superuser权限或可利用COPY PROGRAM等特性)。
💥 漏洞影响
攻击者可通过提示注入绕过pgAdmin AI Assistant的只读事务保护,执行任意SQL语句,包括数据篡改、表结构变更、权限提升,甚至可能借助PostgreSQL的超级用户权限实现远程代码执行(RCE)。影响范围涵盖所有启用AI Assistant并连接可被攻击者植入恶意内容的数据库的pgAdmin实例,对数据完整性和机密性造成严重威胁。
🛡️ 修复建议
升级到官方发布修复该CVE的pgAdmin 4版本(9.16之后的修复版本)。临时缓解措施:1. 禁用AI Assistant功能,或限制其对敏感数据库对象的访问;2. 审查并清理数据库对象中可能存在的恶意负载;3. 如无法升级,可手动将pgAdmin服务器连接的“Prepare threshold”参数设置为0,强制使用扩展查询协议(需验证有效性);4. 监控AI Assistant的SQL执行日志,检测异常的多语句载荷。
📎 参考链接
- https://nvd.nist.gov/vuln/detail/CVE-2026-17351
- https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-17351
- https://github.com/Hunt-Benito/pgadmin-ai-assistant-sql-injection-cve-2026-17351-lexer-differential-bypass
- 原始来源(NVD-Latest)
🚨 威胁评估
| 📈 EPSS 利用概率 | 低 (0.4%) (高于 36.8% 的漏洞) |
| 🚨 CISA KEV | 未被已知利用 |
| 🔧 公开 PoC | 1 个公开 PoC 仓库 |
⚠️ 本文由漏洞情报系统自动生成,仅供安全研究与防御参考。生成时间: 2026-08-03 08:16 | 来源: NVD-Latest
🤖 常见问题解答(FAQ)
❓ 攻击者如何绕过只读事务限制?
利用sqlparse与PostgreSQL对字符串中反斜杠转义的不同理解,构造载荷使sqlparse认为是一条SELECT,而PostgreSQL实际执行多条语句,其中COMMIT结束只读事务,后续写操作不受限制。
❓ 如何检测该漏洞是否被利用?
检查pgAdmin日志中AI Assistant执行的SQL是否含反斜杠、quote、COMMIT、CREATE等组合的异常语句;数据库审计日志中查找非预期的事务控制语句和写操作。
❓ 临时缓解措施有哪些?
禁用AI Assistant或限制其读权限;清理数据库对象中的恶意内容;设置prepare_threshold=0强制扩展查询协议;监控异常SQL。