Vulnerability Details CVE-2026-17346
The fix for CVE-2026-12044 in pgAdmin 4 9.16 hardened qtLiteral and switched sixteen COMMENT ON / pgstattuple / pgstatindex templates to it, but missed several sinks that had been placed in test_sql_string_literal_lint.py's ALLOWLIST on the incorrect assumption that schema, table, publication, and subscription names sourced from pg_catalog via the browser tree could never contain an apostrophe. PostgreSQL permits arbitrary characters in quoted identifiers, so a low-privileged user able to CREATE TABLE, CREATE PUBLICATION, or CREATE SUBSCRIPTION can plant an apostrophe'd object name that breaks out of the unescaped '{{ name }}' template interpolation the moment any user (including a higher-privileged one) opens that object's Statistics or Dependencies tab, allowing arbitrary SQL statement injection in the viewing user's database session.
Affected sinks: the Index Statistics query for all-indexes listing (coll_stats.sql, both the 16_plus and default PostgreSQL-version template variants -- distinct from the single-index stats.sql path already fixed in CVE-2026-12044), and the publication and subscription dependencies.sql / get_position.sql templates (both the pg and ppas/EPAS dialect variants for publications).
Fix switches all of these templates to qtLiteral(conn) for name interpolation, and updates publications/__init__.py and subscriptions/__init__.py to pass conn=self.conn into the dependencies.sql render_template call so the qtLiteral filter has a connection to quote against. The corresponding ALLOWLIST entries in test_sql_string_literal_lint.py are removed now that these sinks are properly escaped rather than merely assumed safe. A behavioral regression test renders each fixed template with a stacked-statement apostrophe payload and asserts both that the object name appears exactly as qtLiteral-escaped and that the rendered SQL parses as exactly one statement, verifying the assertion genuinely fails against the pre-patch raw-interpolation form.
This issue affects pgAdmin 4: the Index Statistics sink from 1.0, and the Publications/Subscriptions sinks from 5.0, both before 9.17.
Exploit prediction scoring system (EPSS) score
EPSS Score 0.004
EPSS Ranking 35.6%
CVSS Severity
CVSS v3 Score 8.8
Products affected by CVE-2026-17346
-
cpe:2.3:a:pgadmin:pgadmin_4:1.0
-
cpe:2.3:a:pgadmin:pgadmin_4:1.1
-
cpe:2.3:a:pgadmin:pgadmin_4:1.2
-
cpe:2.3:a:pgadmin:pgadmin_4:1.3
-
cpe:2.3:a:pgadmin:pgadmin_4:1.4
-
cpe:2.3:a:pgadmin:pgadmin_4:1.5
-
cpe:2.3:a:pgadmin:pgadmin_4:1.6
-
cpe:2.3:a:pgadmin:pgadmin_4:2.0
-
cpe:2.3:a:pgadmin:pgadmin_4:2.1
-
cpe:2.3:a:pgadmin:pgadmin_4:3.0
-
cpe:2.3:a:pgadmin:pgadmin_4:3.1
-
cpe:2.3:a:pgadmin:pgadmin_4:3.2
-
cpe:2.3:a:pgadmin:pgadmin_4:3.3
-
cpe:2.3:a:pgadmin:pgadmin_4:3.4
-
cpe:2.3:a:pgadmin:pgadmin_4:3.5
-
cpe:2.3:a:pgadmin:pgadmin_4:3.6
-
cpe:2.3:a:pgadmin:pgadmin_4:4.0
-
cpe:2.3:a:pgadmin:pgadmin_4:4.1
-
cpe:2.3:a:pgadmin:pgadmin_4:4.10
-
cpe:2.3:a:pgadmin:pgadmin_4:4.11
-
cpe:2.3:a:pgadmin:pgadmin_4:4.12
-
cpe:2.3:a:pgadmin:pgadmin_4:4.13
-
cpe:2.3:a:pgadmin:pgadmin_4:4.14
-
cpe:2.3:a:pgadmin:pgadmin_4:4.15
-
cpe:2.3:a:pgadmin:pgadmin_4:4.16
-
cpe:2.3:a:pgadmin:pgadmin_4:4.17
-
cpe:2.3:a:pgadmin:pgadmin_4:4.18
-
cpe:2.3:a:pgadmin:pgadmin_4:4.19
-
cpe:2.3:a:pgadmin:pgadmin_4:4.2
-
cpe:2.3:a:pgadmin:pgadmin_4:4.20
-
cpe:2.3:a:pgadmin:pgadmin_4:4.21
-
cpe:2.3:a:pgadmin:pgadmin_4:4.22
-
cpe:2.3:a:pgadmin:pgadmin_4:4.23
-
cpe:2.3:a:pgadmin:pgadmin_4:4.24
-
cpe:2.3:a:pgadmin:pgadmin_4:4.25
-
cpe:2.3:a:pgadmin:pgadmin_4:4.26
-
cpe:2.3:a:pgadmin:pgadmin_4:4.27
-
cpe:2.3:a:pgadmin:pgadmin_4:4.28
-
cpe:2.3:a:pgadmin:pgadmin_4:4.29
-
cpe:2.3:a:pgadmin:pgadmin_4:4.3
-
cpe:2.3:a:pgadmin:pgadmin_4:4.30
-
cpe:2.3:a:pgadmin:pgadmin_4:4.4
-
cpe:2.3:a:pgadmin:pgadmin_4:4.5
-
cpe:2.3:a:pgadmin:pgadmin_4:4.6
-
cpe:2.3:a:pgadmin:pgadmin_4:4.7
-
cpe:2.3:a:pgadmin:pgadmin_4:4.8
-
cpe:2.3:a:pgadmin:pgadmin_4:4.9
-
cpe:2.3:a:pgadmin:pgadmin_4:5.0
-
cpe:2.3:a:pgadmin:pgadmin_4:5.1
-
cpe:2.3:a:pgadmin:pgadmin_4:5.2
-
cpe:2.3:a:pgadmin:pgadmin_4:5.3
-
cpe:2.3:a:pgadmin:pgadmin_4:5.4
-
cpe:2.3:a:pgadmin:pgadmin_4:5.5
-
cpe:2.3:a:pgadmin:pgadmin_4:5.6
-
cpe:2.3:a:pgadmin:pgadmin_4:5.7
-
cpe:2.3:a:pgadmin:pgadmin_4:6.0
-
cpe:2.3:a:pgadmin:pgadmin_4:6.1
-
cpe:2.3:a:pgadmin:pgadmin_4:6.10
-
cpe:2.3:a:pgadmin:pgadmin_4:6.11
-
cpe:2.3:a:pgadmin:pgadmin_4:6.12
-
cpe:2.3:a:pgadmin:pgadmin_4:6.13
-
cpe:2.3:a:pgadmin:pgadmin_4:6.14
-
cpe:2.3:a:pgadmin:pgadmin_4:6.15
-
cpe:2.3:a:pgadmin:pgadmin_4:6.16
-
cpe:2.3:a:pgadmin:pgadmin_4:6.17
-
cpe:2.3:a:pgadmin:pgadmin_4:6.18
-
cpe:2.3:a:pgadmin:pgadmin_4:6.19
-
cpe:2.3:a:pgadmin:pgadmin_4:6.2
-
cpe:2.3:a:pgadmin:pgadmin_4:6.20
-
cpe:2.3:a:pgadmin:pgadmin_4:6.21
-
cpe:2.3:a:pgadmin:pgadmin_4:6.3
-
cpe:2.3:a:pgadmin:pgadmin_4:6.4
-
cpe:2.3:a:pgadmin:pgadmin_4:6.5
-
cpe:2.3:a:pgadmin:pgadmin_4:6.6
-
cpe:2.3:a:pgadmin:pgadmin_4:6.7
-
cpe:2.3:a:pgadmin:pgadmin_4:6.8
-
cpe:2.3:a:pgadmin:pgadmin_4:6.9
-
cpe:2.3:a:pgadmin:pgadmin_4:7.0
-
cpe:2.3:a:pgadmin:pgadmin_4:7.1
-
cpe:2.3:a:pgadmin:pgadmin_4:7.2
-
cpe:2.3:a:pgadmin:pgadmin_4:7.3
-
cpe:2.3:a:pgadmin:pgadmin_4:7.4
-
cpe:2.3:a:pgadmin:pgadmin_4:7.5
-
cpe:2.3:a:pgadmin:pgadmin_4:7.6
-
cpe:2.3:a:pgadmin:pgadmin_4:7.7
-
cpe:2.3:a:pgadmin:pgadmin_4:7.8
-
cpe:2.3:a:pgadmin:pgadmin_4:8.0
-
cpe:2.3:a:pgadmin:pgadmin_4:8.1
-
cpe:2.3:a:pgadmin:pgadmin_4:8.10
-
cpe:2.3:a:pgadmin:pgadmin_4:8.11
-
cpe:2.3:a:pgadmin:pgadmin_4:8.12
-
cpe:2.3:a:pgadmin:pgadmin_4:8.13
-
cpe:2.3:a:pgadmin:pgadmin_4:8.14
-
cpe:2.3:a:pgadmin:pgadmin_4:8.2
-
cpe:2.3:a:pgadmin:pgadmin_4:8.3
-
cpe:2.3:a:pgadmin:pgadmin_4:8.4
-
cpe:2.3:a:pgadmin:pgadmin_4:8.5
-
cpe:2.3:a:pgadmin:pgadmin_4:8.6
-
cpe:2.3:a:pgadmin:pgadmin_4:8.7
-
cpe:2.3:a:pgadmin:pgadmin_4:8.8
-
cpe:2.3:a:pgadmin:pgadmin_4:8.9
-
cpe:2.3:a:pgadmin:pgadmin_4:9.0
-
cpe:2.3:a:pgadmin:pgadmin_4:9.1
-
cpe:2.3:a:pgadmin:pgadmin_4:9.10
-
cpe:2.3:a:pgadmin:pgadmin_4:9.11
-
cpe:2.3:a:pgadmin:pgadmin_4:9.12
-
cpe:2.3:a:pgadmin:pgadmin_4:9.13
-
cpe:2.3:a:pgadmin:pgadmin_4:9.14
-
cpe:2.3:a:pgadmin:pgadmin_4:9.15
-
cpe:2.3:a:pgadmin:pgadmin_4:9.16
-
cpe:2.3:a:pgadmin:pgadmin_4:9.2
-
cpe:2.3:a:pgadmin:pgadmin_4:9.3
-
cpe:2.3:a:pgadmin:pgadmin_4:9.4
-
cpe:2.3:a:pgadmin:pgadmin_4:9.5
-
cpe:2.3:a:pgadmin:pgadmin_4:9.6
-
cpe:2.3:a:pgadmin:pgadmin_4:9.7
-
cpe:2.3:a:pgadmin:pgadmin_4:9.8
-
cpe:2.3:a:pgadmin:pgadmin_4:9.9