Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as low-privilege pgAdmin user (server mode)
-
DeliveryDefine/open server lacking passfile or client cert
-
ExploitpgAdmin omits parameter, libpq falls back to service-account files
-
ExecutionConnect to PostgreSQL as service account
-
ImpactRead/write database data with stolen credentials
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V6 - Authentication Credential protection in transit/storage
|
| Exploitation Conditions | Requires pgAdmin 4 running in server (multi-user web) mode - desktop mode is explicitly unaffected. The attacker must be an already-authenticated pgAdmin user (PR:L) and must target a server definition for which no password file, client certificate, or client key is configured, or whose configured path cannot be found. The exploitation only succeeds if the OS account running pgAdmin actually holds the libpq default credential files (~/.pgpass, ~/.postgresql/postgresql.crt and postgresql.key) or the PGPASSFILE/PGSSLCERT/PGSSLKEY environment variables, and for the utility path a pg_service.conf entry or a maintenance-database-name-as-connection-string consumed by pg_dumpall can reintroduce the same files. For the certificate case, the attacker needs only a copy of the service account's public certificate, since libpq pairs it with the private key. Limiting factors: server mode only, prior authenticated access, the non-default presence of service-account credential files, and versions before 9.19. |
| Impact | This is a genuine but conditional credential-exposure issue (CWE-522), not a drive-by remote code execution. The input provides no EPSS score, no CISA KEV listing, and no proof-of-concept - the only references are the fix commit and the tracking issue on GitHub, so there is no public exploit identified at time of analysis. The vuln.today decision label is 'this_week', consistent with a medium-high but non-emergency priority. The CVSS 4.0 vector (AV:N/AC:H/AT:P/PR:L/UI:N) is self-consistent with the description: it is network-reachable but requires an already-authenticated low-privilege pgAdmin user (PR:L), carries a real attack requirement (AT:P) because the service account must actually have the default libpq credential files present in its home directory or environment, and is high-complexity (AC:H) because it depends on that non-default state plus a server defined without its own passfile/cert/key. The high confidentiality/integrity impact on the subsequent system (VC:H/SC:H/SI:H) reflects that a successful attacker connects to a PostgreSQL server as the pgAdmin service account. Net: a real priority for multi-tenant server-mode pgAdmin deployments where the OS account holds saved database credentials, but the preconditions (server mode, existing service-account credential files, a misconfigured/absent per-user credential) meaningfully narrow real-world exploitability. Desktop mode is explicitly unaffected. |
| Exploit ScenarioDerived | In a shared server-mode pgAdmin 4 instance, a low-privileged authenticated user opens or registers a server whose password file and client certificate/key are not set (or point to a missing file). Because pgAdmin omitted those parameters, libpq silently falls back to the OS service account's ~/.pgpass or ~/.postgresql client certificate/key, letting that user authenticate to the target PostgreSQL server using the service account's stored secrets - and supplying only a copy of the public certificate is enough for libpq to pair it with the service account's private key. No public exploit code is identified; the only published artifacts are the vendor fix commit and issue. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 30, 2026
pgAdmin 4 in server (multi-user web) mode before 9.19 lets any already-authenticated pgAdmin user reach credential material belonging to the OS service account that runs pgAdmin. When a server definition has no password file, client certificate or client key configured - or the configured path cannot be found - pgAdmin omits the parameter and libpq falls back to its defaults (~/.pgpass, ~/.postgresql/postgresql.crt and postgresql.key, or PGPASSFILE/PGSSLCERT/PGSSLKEY), so a connection can be made with the service account's saved passwords or client certificate; supplying only a copy of the public certificate is enough for libpq to pair it with the service account's private key. The flaw also resurfaces through utility paths, where a pg_service.conf entry or a maintenance database name interpreted as a connection string by pg_dumpall can reintroduce the same files. Exploitation is conditional on server mode, prior authenticated access, and the non-default presence of those credential files on the service account; no public exploit was identified at time of analysis, and the vendor fix is released in 9.19 (CWE-522, assessed CVSS:3.1 AV:N/AC:H/PR:L/UI:N/S:C/C:H/I:H/A:N).
RemediationAI
Vendor-released patch: pgAdmin 4 9.19. Upgrade any server-mode deployment to 9.19 or later, where the upstream commit (https://github.com/pgadmin-org/pgadmin4/commit/32db693198f28b78fe2af12a726b80a68eb78cb2, tracked in https://github.com/pgadmin-org/pgadmin4/issues/10652) ensures each credential parameter carries an explicit value in server mode - the user's own file or an unopenable path - in the connection string, in the environment of spawned utilities, and in the --dbname connection string that outranks a pg_service.conf entry, with desktop mode left as it was. Upgrading is the only complete fix described by the available evidence; no interim workaround is documented, so exposure before upgrade is bounded by the exploitation prerequisites rather than by a configuration toggle - the issue is reachable only in server mode, only by an already-authenticated pgAdmin user, and only on server definitions lacking a password file, client certificate or client key (or pointing at a path that cannot be found) while the pgAdmin service account actually holds ~/.pgpass, ~/.postgresql/postgresql.crt and postgresql.key or sets PGPASSFILE, PGSSLCERT and PGSSLKEY. Because no workaround is published, treat server-mode instances below 9.19 as carrying the residual risk until patched and confirm the running version rather than assuming a package update has landed.
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-522, insufficiently protected credentials, arising from how pgAdmin 4 constructs libpq connection parameters rather than from a memory-safety or injection flaw. libpq resolves several credential-related parameters implicitly: if passfile/PGPASSFILE, sslcert/PGSSLCERT or sslkey/PGSSLKEY are not supplied, it uses the defaults in the home directory of the process's operating-system account. Because pgAdmin runs utilities and connections under the service account in server mode, an omitted parameter silently promoted the service account's private credential files into a user-initiated connection. The client-certificate case is notable: libpq accepts a public certificate and pairs it with the corresponding private key, so a user holding only a copy of the service account's public certificate could still complete certificate authentication. The utility surface - background processes, view refresh, subscription connections and pg_dumpall invoked with a maintenance database name parsed as a connection string - extended the exposure beyond the interactive connection, and a pg_service.conf entry could re-supply the same files. The upstream commit 32db693198f28b78fe2af12a726b80a68eb78cb2 introduces utility_conninfo/utility_connection_params and client_files_isolated helpers so that in server mode each of these parameters is given an explicit value - the user's own file or a path that can never be opened - in the connection string, in the environment of the utilities, and in the --dbname connection string that takes precedence over a service entry. Desktop mode logic is intentionally unchanged. No CPE identifiers were supplied; affected code is the pgAdmin 4 web/browser backend (server mode) shipping before 9.19.
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:N/VC:H/VI:N/VA:N/SC:H/SI:H/SA:N
Authenticated low-privilege server-mode user (PR:L), dependent on service-account credential files existing (AC:H); stolen creds reach the database (scope change, C:H/I:H), with no availability impact.
Primary rating from Vendor (f86ef6dc-4d3a-42ad-8f28-e6d5547a5007).
CVSS VectorVendor: f86ef6dc-4d3a-42ad-8f28-e6d5547a5007
Lifecycle Timeline
2DescriptionCVE.org
When a server in pgAdmin 4 had no password file, client certificate or client key configured, or the configured one could not be found, pgAdmin left the parameter out of the connection and libpq fell back to the defaults of the operating-system account running pgAdmin: ~/.pgpass, ~/.postgresql/postgresql.crt and postgresql.key, or PGPASSFILE, PGSSLCERT and PGSSLKEY. In server mode any user could therefore connect to a server with the service account's saved passwords or client certificate, and supplying only a copy of its public certificate was enough for libpq to pair it with the service account's private key. A pg_service.conf entry, or a maintenance database name read as a connection string by pg_dumpall, could bring the same files back for the utilities.
The fix gives each of these parameters a value in server mode, the user's own file or otherwise a path that can never be opened, in the connection string, in the environment of the utilities and in the --dbname connection string that ranks above a service entry. Desktop mode is unchanged.
This issue affects pgAdmin 4: before 9.19.
Articles & Coverage 2
Executive ViewAI
CVE-2026-116247 is a high-severity credential exposure flaw in pgAdmin 4 (server mode) that lets any authenticated pgAdmin user reach OS service account credentials stored in libpq default files, potentially compromising the database infrastructure managed by that account. Leadership should care because an attacker with a low-privilege pgAdmin login could escalate to the service account's saved passwords or client certificates, impacting confidentiality and integrity of database connections across the organization.
No vendor-released patch identified at time of analysis. Interim mitigations: restrict filesystem permissions and access to the service account's libpq default files; avoid reliance on default credential file fallback by explicitly configuring per-server credentials; audit and minimize authenticated pgAdmin users; monitor for anomalous database connections using the service account.
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-114388
GHSA-47h8-x372-g8v3
NVD
CVE.org
EPSS
Exploit-DB