CVE-2026-41889pgx是用于Go语言的PostgreSQL驱动及工具包。在5.9.2版本之前,当应用使用非默认的简单协议,并在SQL查询中使用了美元引用字符串字面量时,如果该字面量包含在字符串外部会被解释为占位符的文本,且该占位符的值可被攻击者控制,则可能发生SQL注入。攻击者可借此窃取或篡改数据库数据,该风险已在5.9.2版本中修复。
该漏洞的根本原因在于pgx驱动在处理简单协议下的SQL语句解析时,未能正确区分美元引用字符串内部的占位符与实际参数绑定。在正常情况下,位于$$...$$之间的内容应被视为纯文本字面量。然而,在受影响版本中,如果启用了简单协议,驱动程序在解析SQL语句时,可能会错误地将字符串字面量内部的文本(如$1)识别为外部参数占位符。如果攻击者能够控制这部分输入,并配合构造特定的查询结构,即可导致原本的数据被当作SQL代码执行,从而绕过参数化查询的防护机制,实现远程SQL注入攻击。