Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as low-privileged pgAdmin server-mode user
-
DeliveryWait for another user's psql/utility to run and leak password
-
ExploitInitiate connection to target server without own saved password
-
Executionlibpq reuses inherited PGPASSWORD from shared environment
-
ImpactAccess victim's database under their credentials
Vulnerability Assessment
| Weakness |
CWE
|
| Exploitation Conditions | Requires pgAdmin 4 (before 9.19) running in server mode (multi-user web deployment), where pgAdmin's single process environment is shared across all users' requests. The attacker must be an authenticated pgAdmin user (PR:L) and must connect to a target server using a saved connection that has no password of its own, so libpq falls back to the inherited PGPASSWORD. Exploitation also depends on timing: another user must have previously triggered a psql session or background utility that wrote a password into the shared environment, and that value must still be present. These are the limiting factors - single-user desktop installations are not affected, the condition is opportunistic rather than attacker-controlled (reflected in AC:H and AT:P), and the attacker gains only whatever database access the victim's credentials allow. The complete fix is upgrading to pgAdmin 4 9.19; the vendor provides no separate mitigation. |
| Impact | This is a genuine but conditional multi-user privacy flaw rather than a mass-exploitation emergency. The input CVSS 4.0 vector (AV:N/AC:H/AT:P/PR:L/UI:P, score 7.0) tells a consistent story: network-reachable but with high attack complexity (AC:H) and a specific attack requirement (AT:P), low-privilege authentication required (PR:L), and some passive user interaction (UI:P). Those modifiers align with the described mechanism - an attacker must already be an authenticated pgAdmin user in server mode and must rely on another user having earlier run psql or a background utility that left its password (PGPASSWORD or a per-process variable) in pgAdmin's shared process environment; the attacker then makes a connection with no password of its own so libpq falls back to the inherited value. No EPSS score is provided in the input, so exploitation probability cannot be quantified. KEV status is not listed (treat as not present), and the only references are the fix commit and the GitHub issue, so there is no public exploit identified at time of analysis - though the fix commit publicly discloses the exact mechanism. The vuln.today decision label is 'this_week', which, combined with high confidentiality impact (VC:H) and a subsequent-system confidentiality impact (SC:H, i.e. access to a database the victim could reach), warrants prompt patching but does not indicate act_now/emergency-level active exploitation. Net: a real priority for anyone running pgAdmin in multi-user server mode, materially lower risk for single-user desktop deployments. |
| Exploit ScenarioDerived | In a shared pgAdmin server-mode deployment, a low-privileged but authenticated user waits until another user runs a psql session or a background utility (backup, restore, import) that writes that user's database password into pgAdmin's shared process environment. Because nothing clears it and every new process inherits the environment, the attacker then opens their own connection to the same server without supplying a password, and libpq silently reuses the victim's leaked PGPASSWORD, logging the attacker in with another user's saved credentials. No public exploit code is identified at time of analysis, and the high attack complexity plus required timing of a victim's process limit reliability. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 30, 2026
Credential leakage in pgAdmin 4 before 9.19 allows one authenticated user of a server-mode deployment to connect to a PostgreSQL server using another user's saved password, because the server manager wrote passwords into pgAdmin's own shared process environment (PGPASSWORD and a per-process utility variable) and never removed them. Only multi-user web deployments are exposed: pgAdmin's environment is shared by every user's requests and copied into every process it starts, so a later PSQL session or background utility started on behalf of a different user inherits the value, and libpq silently applies PGPASSWORD to any connection made without a password of its own. Exploitation is opportunistic rather than attacker-controlled - it requires a victim to have triggered a password-bearing process earlier and the value to still be resident, and the attacker gains only the database access the victim's credentials grant; no public exploit code was identified at time of analysis and there is no CISA KEV entry.
RemediationAI
Upgrade to pgAdmin 4 9.19, which contains the complete fix: the password is now written only into the environment constructed for the one process that requires it, the process executor removes the per-process variable with os.environ.pop() before handing it to the utility as PGPASSWORD, and the PSQL tool spawns psql with os.environ.copy() plus process-specific extras instead of mutating the shared environment. The vendor provides no separate mitigation, so updating is the only complete remediation; verify the deployed build against the upstream commit https://github.com/pgadmin-org/pgadmin4/commit/0eefa38f774dce07c1f939d87f2993b36e2313b9 and the issue https://github.com/pgadmin-org/pgadmin4/issues/10653. If an immediate upgrade to 9.19 is not possible, the only exposure-reducing option consistent with the flaw is to stop running the affected instance in shared server mode and restrict it to a single trusted operator, since the leak depends on the process environment being shared across users - the trade-off is loss of the multi-user web deployment, and the underlying defect remains until the upgrade is applied. Rotating any server passwords that were used with passwordless saved connections while an unpatched multi-user instance was in service limits the value of credentials already inherited by other users. Administrators should also note that this issue affects pgAdmin 4 only up to 9.19 and that version 9.19 or later must be confirmed in the deployed image, not merely the latest tag.
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
Root cause is CWE-214 (Exposure of Sensitive Information Through Environmental Variables) in pgAdmin 4's server manager. When launching the PSQL tool or a background utility, the manager exported the decrypted server password into pgAdmin's own os.environ as PGPASSWORD (and, for background processes, under a variable named after the process ID). Because the pgAdmin web process serves all users, that environment is global and is inherited by every child process it forks, so any subsequent connection string executed by psql or a utility is augmented by libpq's PGPASSWORD fallback whenever the connection itself carries no password. The upstream fix (commit 0eefa38) changes the contract so the password is placed only into the environment dictionary built for the specific process that needs it: BatchProcess._set_env_variables now calls export_password_env with the per-process env, and process_executor.execute uses os.environ.pop() of the PROCID-keyed variable so the value is consumed and removed rather than left resident. The psql tool's get_user_env() now returns os.environ.copy() and merges process-specific extras, so spawned PTY sessions receive a copy of pgAdmin's environment instead of the shared object itself, and the env is threaded through create_pty_terminal, windows_platform, pty_handel_io and get_connection_str. A regression test (test_set_env_variables_password.py) asserts the password lands only in the per-process env and that os.environ is unchanged.
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:H/AT:P/PR:L/UI:P/VC:H/VI:N/VA:N/SC:H/SI:L/SA:N
Authenticated server-mode user (PR:L) over the network (AV:N); AC:H because it depends on another user's process leaking a password; scope change (S:C) as the impacted component is a separate PostgreSQL server, with C:H and incidental I:L.
Primary rating from Vendor (f86ef6dc-4d3a-42ad-8f28-e6d5547a5007).
CVSS VectorVendor: f86ef6dc-4d3a-42ad-8f28-e6d5547a5007
Lifecycle Timeline
2DescriptionCVE.org
To pass a server's password to psql and to the utilities pgAdmin 4 runs as background processes, the server manager wrote it into pgAdmin's own process environment: as PGPASSWORD for the PSQL tool, and under a per-process variable for a utility. Nothing removed it afterwards. pgAdmin's environment is shared by every user's requests and copied into every process it starts, so in server mode another user's later PSQL session or utility inherited the password, and libpq used PGPASSWORD for any connection made without a password of its own, letting one user connect with another user's saved password.
The fix puts the password only into the environment built for the process that needs it and starts psql with a copy of pgAdmin's environment instead of the environment itself.
This issue affects pgAdmin 4: before 9.19.
Executive ViewAI
CVE-2026-116246 is a high-severity credential leakage flaw in pgAdmin 4 (versions before 9.19) used in multi-user server-mode deployments. It allows one authenticated user to connect to a PostgreSQL server using another user's saved password because passwords are written into pgAdmin's shared process environment and never removed. This undermines user segregation and could give unauthorized database access to any authenticated user of the pgAdmin instance, potentially exposing sensitive data and violating access control policies.
No vendor-released patch identified at time of analysis. Interim mitigations: restrict pgAdmin server-mode deployments to trusted networks; avoid saving passwords for shared servers; enforce per-user database credentials with least privilege; monitor for unauthorized database connections.
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-114387
GHSA-835v-3mj2-2w29
NVD
CVE.org
EPSS
Exploit-DB