GitHub Advisoryadvisory · Go

GHSA-j88v-2chj-qfwx pgx: SQL Injection via placeholder confusion with dollar quoted string literals

LOW Published 2026-04-22 Modified 2026-05-13 Official page ↗
Aliases
CVE-2026-41889
Ecosystem
Go
Packages
github.com/jackc/pgx/v5, github.com/jackc/pgx/v4, github.com/jackc/pgx
Severity
Low
CVSS vector
CVSS:4.0/AV:N/AC:H/AT:P/PR:L/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N
Weaknesses
CWE-89
Reviewed
2026-04-22

Affected packages

• Go github.com/jackc/pgx/v5: < 5.9.2 → fixed in 5.9.2 • Go github.com/jackc/pgx/v4: <= 4.18.3 (no fix yet) • Go github.com/jackc/pgx: <= 3.6.2 (no fix yet)

Description

Impact SQL Injection can occur when: 1. The non-default simple protocol is used. 2. A dollar quoted string literal is used in the SQL query. 3. That string literal contains text that would be would be interpreted as a placeholder outside of a string literal. 4. The value of that placeholder is controllable by the attacker. e.g. ```go attackValue := `$tag$; drop table canary; --` _, err = tx.Exec(ctx, `select $tag$ $1 $tag$, $1`, pgx.QueryExecModeSimpleProtocol, attackValue) ``` This is unlikely to occur outside of a contrived scenario. Patches The problem is resolved in v5.9.2. Workarounds Do not use the simple protocol to execute queries matching all the above conditions.

Related

Alias · CVE (1)

  • CVE-2026-41889 pgx is a PostgreSQL driver and toolkit for Go. vulnerability

Weakness · CWE (1)

  • CWE-89 Improper Neutralization of Special Elements used in an SQL Command weakness

References