Skip to main content

pgAdmin 4 CVE-2026-116246

| EUVDEUVD-2026-114387 HIGH
Invocation of Process Using Visible Sensitive Information (CWE-214)
2026-10-30 f86ef6dc-4d3a-42ad-8f28-e6d5547a5007 GHSA-835v-3mj2-2w29
7.0
CVSS 4.0 · Vendor: f86ef6dc-4d3a-42ad-8f28-e6d5547a5007
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Authenticate as low-privileged pgAdmin server-mode user
  2. Delivery
    Wait for another user's psql/utility to run and leak password
  3. Exploit
    Initiate connection to target server without own saved password
  4. Execution
    libpq reuses inherited PGPASSWORD from shared environment
  5. Impact
    Access 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.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

pgAdmin 4 0 <9.19

Affected Packages

euvd pgadmin_4 fix: 9.19

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

Vendor (f86ef6dc-4d3a-42ad-8f28-e6d5547a5007) PRIMARY 7.0 HIGH
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
vuln.today AI 7.1 HIGH

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.

3.1 AV:N/AC:H/PR:L/UI:N/S:C/C:H/I:L/A:N
4.0 AV:N/AC:H/AT:P/PR:L/UI:P/VC:H/VI:N/VA:N/SC:H/SI:L/SA:N

Primary rating from Vendor (f86ef6dc-4d3a-42ad-8f28-e6d5547a5007).

CVSS VectorVendor: f86ef6dc-4d3a-42ad-8f28-e6d5547a5007

Attack Vector
Network
Attack Complexity
High
Attack Requirements
Present
Privileges Required
Low
User Interaction
Passive
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
None
Vulnerable system: Availability
None
Subsequent system: Confidentiality
High
Subsequent system: Integrity
Low
Subsequent system: Availability
None

Lifecycle Timeline

2
Patch available
Oct 30, 2026 - 21:18 EUVD
CVE Published
Oct 30, 2026 - 20:17 cve.org
HIGH 7.0

DescriptionCVE.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

Why It Matters

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.

Business Impact: High
Compensating Controls

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

EPSS Score
0.2%
Top 91% exploitable
Prevalence
High
most widely used PostgreSQL administration tool, broadly deployed
Data Quality
5 sources
Confidence: Medium

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact
High

Priority Score

35
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +35
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

CVE-2025-2945 CRITICAL POC
9.9 Apr 03

pgAdmin 4 contains critical remote code execution vulnerabilities in the Query Tool download and Cloud Deployment endpoi

CVE-2024-2044 CRITICAL POC
9.9 Mar 07

pgAdmin <= 8.3 is affected by a path-traversal vulnerability while deserializing users’ sessions in the session handling

CVE-2024-3116 CRITICAL POC
9.8 Apr 04

pgAdmin <= 8.4 is affected by a Remote Code Execution (RCE) vulnerability through the validate binary path API. Rated cr

CVE-2022-4223 HIGH POC
8.8 Dec 13

The pgAdmin server includes an HTTP API that is intended to be used to validate the path a user selects to external Post

CVE-2024-9014 MEDIUM POC
6.5 Sep 23

pgAdmin versions 8.11 and earlier are vulnerable to a security flaw in OAuth2 authentication. Rated medium severity (CVS

CVE-2025-12762 CRITICAL
9.8 Nov 13

Remote code execution in pgAdmin 4 (versions up to and including 9.9) lets an attacker who can get a crafted PLAIN-forma

CVE-2026-17351 CRITICAL
9.4 Jul 31

SQL injection sandbox escape in pgAdmin 4's AI Assistant (versions 9.13 through 9.16) lets an attacker break out of the

CVE-2026-17566 CRITICAL POC
9.4 Jul 31

OS command injection in pgAdmin 4 (all versions before 9.18) lets an authenticated user with the commonly-granted tools_

CVE-2026-116241 CRITICAL
9.4 Oct 30

Command injection in pgAdmin 4 before 9.19 lets an authenticated, low-privileged database user execute arbitrary operati

CVE-2024-4216 MEDIUM POC
5.4 May 02

pgAdmin <= 8.5 is affected by XSS vulnerability in /settings/store API response json payload. Rated medium severity (CVS

CVE-2026-17349 CRITICAL
9.3 Jul 31

Cross-tenant credential theft in pgAdmin 4 (9.0 through 9.16) lets an authenticated non-owner user hijack another user's

CVE-2025-2946 CRITICAL
9.1 Apr 03

pgAdmin <= 9.1 is affected by a security vulnerability with Cross-Site Scripting(XSS). Rated critical severity (CVSS 9.1

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy