PatchSiren cyber security CVE debrief
CVE-2026-17346 pgadmin.org CVE debrief
The CVE-2026-17346 vulnerability in pgAdmin 4 arises from an incomplete fix for CVE-2026-12044, specifically in the qtLiteral hardening and template switching for COMMENT ON / pgstattuple / pgstatindex. The fix missed several sinks in test_sql_string_literal_lint.py's ALLOWLIST, including the Index Statistics query for all-indexes listing and publication and subscription dependencies.sql / get_position.sql templates. A low-privileged user can exploit this by creating a table, publication, or subscription with an apostrophe'd name, breaking the unescaped '{{ name }}' template interpolation when another user views the object's Statistics or Dependencies tab, leading to arbitrary SQL statement injection. This issue affects pgAdmin 4 versions before 9.17, with the Index Statistics sink affected from version 1.0 and the Publications/Subscriptions sinks from version 5.0. The vulnerability has a high severity with a CVSS score of 8.7, allowing a low-privileged user to inject arbitrary SQL statements in the viewing user's database session.
- Vendor
- pgadmin.org
- Product
- pgAdmin 4
- CVSS
- HIGH 8.7
- CISA KEV
- Not listed in stored evidence
- Original CVE published
- 2026-07-31
- Original CVE updated
- 2026-08-05
- Advisory published
- 2026-07-31
- Advisory updated
- 2026-08-05
Who should care
pgAdmin 4 users and administrators, especially those with low-privileged users, should be aware of this vulnerability and take necessary actions to mitigate it. This includes upgrading to version 9.17 or later, implementing compensating controls such as Web Application Firewalls (WAFs), monitoring database activity for suspicious SQL queries, restricting database privileges to the minimum required, and regularly reviewing and updating pgAdmin 4 configurations and ALLOWLIST entries.
Technical summary
The CVE-2026-17346 vulnerability in pgAdmin 4 arises from the incomplete fix for CVE-2026-12044. The fix for CVE-2026-12044 hardened qtLiteral and switched several COMMENT ON / pgstattuple / pgstatindex templates to it but missed several sinks in test_sql_string_literal_lint.py's ALLOWLIST. These missed sinks include the Index Statistics query for all-indexes listing and the publication and subscription dependencies.sql / get_position.sql templates. A low-privileged user can exploit this by creating a table, publication, or subscription with an apostrophe'd name, which can then be used to inject arbitrary SQL statements when another user views the object's Statistics or Dependencies tab.
Defensive priority
This issue is of high severity with a CVSS score of 8.7 and could allow a low-privileged user to inject arbitrary SQL statements in the viewing user's database session.
Recommended defensive actions
- Inventory and assess pgAdmin 4 installations for version 9.16 or earlier and upgrade to version 9.17 or later.
- Implement compensating controls such as Web Application Firewalls (WAFs) to detect and prevent SQL injection attacks.
- Monitor database activity for suspicious SQL queries that could indicate exploitation attempts.
- Restrict database privileges to the minimum required for users to perform their tasks.
- Regularly review and update pgAdmin 4 configurations and ALLOWLIST entries to ensure they are secure and up-to-date.
Evidence notes
The CVE-2026-17346 issue arises from the fix for CVE-2026-12044 in pgAdmin 4 version 9.16, which inadvertently left several sinks unhardened against SQL injection. Specifically, the fix missed sinks in test_sql_string_literal_lint.py's ALLOWLIST, assuming that schema, table, publication, and subscription names from pg_catalog via the browser tree could not contain an apostrophe. However, PostgreSQL allows arbitrary characters in quoted identifiers, enabling a low-privileged user to create an object with an apostrophe'd name. This can break the unescaped '{{ name }}' template interpolation when any user views the object's Statistics or Dependencies tab, leading to arbitrary SQL statement injection.
Sources and references
Verified primary and authoritative sources
-
CVE-2026-17346 CVE Program record
Publisher, destination, and source semantics verified
URL: https://www.cve.org/CVERecord?id=CVE-2026-17346
CVE Program - Official CVE Program record with source-provided CVE metadata.
-
CVE-2026-17346 NVD vulnerability detail
Publisher, destination, and source semantics verified
URL: https://nvd.nist.gov/vuln/detail/CVE-2026-17346
NIST National Vulnerability Database - Official NIST NVD detail page and source-specific vulnerability assessment.
Supplemental references
-
Source reference
Unverified legacy reference
URL: https://github.com/pgadmin-org/pgadmin4/commit/73b3218992cc37af6e10b7e54eaeed6ec293c6b2
f86ef6dc-4d3a-42ad-8f28-e6d5547a5007
-
Source reference
Unverified legacy reference
URL: https://github.com/pgadmin-org/pgadmin4/commit/f75452bfd0f786d0c071638919d48fc1d76f987d
f86ef6dc-4d3a-42ad-8f28-e6d5547a5007
-
Source reference
Unverified legacy reference
URL: https://github.com/pgadmin-org/pgadmin4/issues/10193
f86ef6dc-4d3a-42ad-8f28-e6d5547a5007
Methodology and review provenance
AI-assisted synthesis based on stored public vulnerability evidence. System validation, approval state, and publication status do not by themselves establish human review of this revision. PatchSiren helps prioritize defensive review and does not prove exposure or remediation on any system.