Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain CREATEDB role on target server
-
DeliveryCreate database named as libpq connection string
-
ExploitVictim opens database and refreshes materialized view
-
ExecutionpgAdmin's psql redirected to attacker-controlled host
-
ImpactSaved server password disclosed to attacker
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Argument sanitization
|
| Exploitation Conditions | Requires an authenticated role (PR:L) holding the CREATEDB privilege on the target PostgreSQL server, used to create a database whose name is a valid libpq connection string - specifically one containing '=' or formatted as a postgresql:// URI - so libpq treats it as connection keywords overriding host and port. The high-impact credential disclosure further requires a pgAdmin user who has a saved server password to navigate into that database and trigger a materialized view refresh, which invokes psql with the malicious name as --dbname. LIMITING FACTORS: exploitation is gated on untrusted roles being granted CREATEDB (not default for ordinary users), on a victim pgAdmin session with a stored password performing the refresh, and on pgAdmin 4 versions before 9.19; the SSRF-style 'connect to arbitrary addresses' effect does not itself require the victim's saved password. The only complete fix is updating to 9.19, which wraps the name via database_conninfo(). |
| Impact | This is a genuine but conditional credential-exposure flaw (CWE-88 argument injection) in pgAdmin 4, not a drive-by remote code execution. The supplied CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N) scores 7.1 and reflects network reach, low complexity, and pure confidentiality impact with no integrity or availability effect. The PR:L is the key limiter: an attacker must already hold a role with the CREATEDB privilege on the target PostgreSQL server to plant a database whose name is a libpq connection string. The description also makes clear that the high-value payoff - theft of a connecting user's saved server password - depends on a separate pgAdmin user actually refreshing a materialized view inside that malicious database, so meaningful victim interaction is involved even though the input vector lists UI:N (I diverge to UI:A/UI:R in my own assessment below). No CISA KEV listing and no EPSS score were provided, so there is no signal of active or probable widespread exploitation; the vuln.today decision label is 'this_week', indicating prompt-but-not-emergency remediation. No public exploit was identified - the only references are the vendor fix commit and the GitHub issue, which are not exploit code. Net: real priority for environments where untrusted roles hold CREATEDB, lower priority where database creation is tightly restricted. |
| Exploit ScenarioDerived | An attacker holding a CREATEDB-capable PostgreSQL role creates a database whose name is a libpq connection string (e.g. containing '=' or a postgresql:// URI) pointing to a host and port they control. When a pgAdmin user who has saved their server password later refreshes a materialized view within that database, pgAdmin invokes psql with the crafted name as --dbname, libpq interprets it as a full connection string, and the user's saved password is transmitted to the attacker's endpoint; the pgAdmin host can likewise be coerced into connecting to arbitrary addresses. No public exploit was identified at time of analysis - only the fix commit and issue report are referenced. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 30, 2026
Credential disclosure in pgAdmin 4 before 9.19 allows a database name controlled by a CREATEDB role to be interpreted by libpq as a connection string, redirecting the psql refresh process to an attacker-chosen host and exposing the connecting user's saved server password. Exploitation is conditional: it requires an authenticated role with CREATEDB, a pgAdmin user with a stored password who navigates into the malicious database and triggers a materialized view refresh, and an affected version before 9.19. No public exploit was identified at time of analysis, and the same issue class was previously fixed for Backup, Restore, Maintenance and Import/Export Data under CVE-2026-86862.
RemediationAI
Vendor-released patch: upgrade to pgAdmin 4 9.19 or later. The fix routes the database name through database_conninfo() so libpq treats it strictly as a database name; the commit is https://github.com/pgadmin-org/pgadmin4/commit/a1a43e8c28cf10cec73df0c476905562d19af483 and the tracking issue is https://github.com/pgadmin-org/pgadmin4/issues/10645. The available data does not document a complete workaround, and the independent assessment states that updating to 9.19 is the only complete fix. Because exploitation is gated on a role with CREATEDB and a victim refresh with a saved password, limiting CREATEDB to trusted roles reduces exposure but does not replace the patch.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The root cause is CWE-88 argument injection in pgAdmin 4's materialized view refresh path. pgAdmin passed the target database's name unchanged to psql's --dbname argument. libpq treats a --dbname value containing '=' or a postgresql:// URI as a full connection string, whose keywords override the host, port and other settings pgAdmin had supplied. A role with CREATEDB can create a database whose name is such a string; when a pgAdmin user with a saved server password triggers a refresh, the psql process that pgAdmin starts connects to the creator's chosen endpoint and presents that saved password. The pgAdmin host can also be made to open connections to arbitrary addresses. The fix imports database_conninfo() and wraps data['database'] with it, so libpq treats the value strictly as a database name; the source evidence is commit a1a43e8c28cf10cec73df0c476905562d19af483. The independent assessment notes that the high-impact credential disclosure requires the victim refresh, while the arbitrary-address connection effect does not itself require the victim's saved password.
Know when Pgadmin gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N
Attacker needs CREATEDB privilege (PR:L) and a victim must trigger the refresh (UI:R); impact is disclosure of a saved password only, so C:H with I:N/A:N and scope unchanged.
Primary rating from Vendor (f86ef6dc-4d3a-42ad-8f28-e6d5547a5007).
CVSS VectorVendor: f86ef6dc-4d3a-42ad-8f28-e6d5547a5007
Lifecycle Timeline
2DescriptionCVE.org
pgAdmin 4's materialized view refresh passed the target database's name to psql's --dbname argument unchanged. libpq treats a --dbname value containing "=" (or a postgresql:// URI) as a full connection string, whose keywords override the host, port and other settings pgAdmin had supplied. A database whose name is such a string, which any role with CREATEDB can create, therefore redirected the psql process pgAdmin starts for the refresh to a host and port of the creator's choosing, and the connecting user's saved server password was presented to that endpoint. It also let the pgAdmin host be made to open connections to arbitrary addresses.
The same weakness was fixed for Backup, Restore, Maintenance and Import/Export Data in earlier releases (CVE-2026-86862); the materialized view refresh was the remaining caller. The fix routes the name through the same database_conninfo() helper, so libpq treats it strictly as a database name.
This issue affects pgAdmin 4: before 9.19.
Articles & Coverage 2
Executive ViewAI
CVE-2026-116252 is a high-severity credential disclosure vulnerability in pgAdmin 4 (versions before 9.19) that could allow an attacker with a CREATEDB role to redirect database connections and steal stored passwords. This affects organizations using pgAdmin for PostgreSQL administration, particularly those with multiple roles and saved credentials. Leadership should prioritize remediation to prevent unauthorized access to sensitive database environments.
No vendor-released patch identified at time of analysis. Interim mitigations include restricting CREATEDB privileges to trusted roles, avoiding interaction with untrusted databases in pgAdmin, clearing saved passwords, and monitoring for suspicious connection redirects.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
pgAdmin 4 contains critical remote code execution vulnerabilities in the Query Tool download and Cloud Deployment endpoi
pgAdmin <= 8.3 is affected by a path-traversal vulnerability while deserializing users’ sessions in the session handling
pgAdmin <= 8.4 is affected by a Remote Code Execution (RCE) vulnerability through the validate binary path API. Rated cr
The pgAdmin server includes an HTTP API that is intended to be used to validate the path a user selects to external Post
pgAdmin versions 8.11 and earlier are vulnerable to a security flaw in OAuth2 authentication. Rated medium severity (CVS
Remote code execution in pgAdmin 4 (versions up to and including 9.9) lets an attacker who can get a crafted PLAIN-forma
SQL injection sandbox escape in pgAdmin 4's AI Assistant (versions 9.13 through 9.16) lets an attacker break out of the
OS command injection in pgAdmin 4 (all versions before 9.18) lets an authenticated user with the commonly-granted tools_
Command injection in pgAdmin 4 before 9.19 lets an authenticated, low-privileged database user execute arbitrary operati
pgAdmin <= 8.5 is affected by XSS vulnerability in /settings/store API response json payload. Rated medium severity (CVS
Cross-tenant credential theft in pgAdmin 4 (9.0 through 9.16) lets an authenticated non-owner user hijack another user's
pgAdmin <= 9.1 is affected by a security vulnerability with Cross-Site Scripting(XSS). Rated critical severity (CVSS 9.1
EUVD-2026-114393
GHSA-c8mg-g5cp-g9w7
NVD
CVE.org
EPSS
Exploit-DB