Skip to main content

pgAdmin 4 EUVDEUVD-2026-114389

| CVE-2026-116248 MEDIUM
Missing Authorization (CWE-862)
2026-10-30 f86ef6dc-4d3a-42ad-8f28-e6d5547a5007 GHSA-jjwq-6v5r-fhwh
6.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-privilege pgAdmin user
  2. Delivery
    Submit server API payload (or servers.json) with 'shared' flag set
  3. Exploit
    Trusted-looking shared server planted in all users' trees
  4. Execution
    Victim connects and submits own DB password
  5. Impact
    Attacker-controlled host captures victim's database credentials

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization checks on every request
MITRE ATT&CK

1 technique across 1 tactic: Privilege Escalation

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitable only when pgAdmin runs in multi-user SERVER_MODE (desktop mode is unaffected). The attacker must already hold an authenticated account with at least the stock 'User' role that permits registering a server (PR:L); unauthenticated exploitation is not possible. Planting the server requires no victim action, but the damaging credential-capture outcome depends on a separate victim actively connecting to the planted server and entering their own database password (UI:A), and on the planted server pointing at a host the attacker controls. These interaction and authentication requirements, plus the server-mode-only exposure, materially limit real-world impact below the raw vector.

Impact

This is a moderate, authorization-focused issue (CWE-862, missing authorization) rather than a high-urgency emergency. The supplied CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:A, score 6.0) tells the real story: network-reachable and low-complexity, but it requires an authenticated low-privilege account (PR:L) AND active victim interaction (UI:A) to reach meaningful impact. The vulnerable-system impact is only VI:L (an attacker can plant a shared server record in other users' trees), with VC:N/VA:N - no direct data access. The elevated SC:H reflects the real danger: a victim who connects to the planted, attacker-controlled host hands over their own database password, so the serious outcome lands on a subsequent system (the victim's PostgreSQL credentials/DB), not pgAdmin itself. No EPSS score, no CISA KEV listing, and no public exploit reference are present in the input, and the vuln.today decision label is 'this_month' (not act_now/emergency) - all consistent with a patch-this-cycle priority rather than a drop-everything incident. There is no signal conflict to flag: every source points to a credible but conditional, interaction- and authentication-gated phishing-style credential-capture risk.

Exploit ScenarioDerived

An authenticated pgAdmin user with only the stock 'User' role (enough to register a server) sends a create/update request to the server API - or imports a crafted servers.json - carrying the 'shared' flag, which the backend previously stored without checking the caller's role. A server named to look official (e.g. 'Production DB') then appears in every other user's browser tree pointing at a host the attacker controls; when a trusting colleague clicks it and enters their database password, that password is transmitted to the attacker's host. No public exploit code is identified in the available data.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.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

pgAdmin 4 before 9.19 fails to enforce the administrator-only restriction on server sharing in server mode: the server API create and update endpoints persist a 'shared' flag and shared username supplied by any authenticated user holding the stock 'User' role, and the servers.json import prunes a non-administrator's shared entries only after validation, so a file containing an invalid entry can still smuggle in a shared server. The planted server carries no stored credentials, so the direct impact is limited to its insertion into every other user's tree, named to look trustworthy and pointed at an attacker-controlled host; the damaging outcome requires a separate victim to connect and hand over their own database password. Fixes are released in 9.19 and no public exploit has been identified at time of analysis, though the exposure is confined to multi-user deployments running SERVER_MODE rather than desktop mode.

RemediationAI

Upgrade to pgAdmin 4 9.19 or later, which is the vendor-released fix; the commit d761942d0bb84d52b18e81307064dd08e26224e3 adds the HTTP 403 refusal for non-administrator sharing on the create and update endpoints, reorders the servers.json import so non-administrator shared entries are pruned before validation, and emits a startup warning for servers shared earlier by non-administrators. The patch does not retroactively un-share existing records, so administrators must audit the configuration database for server rows with the shared flag set whose owner lacks the Administrator role - the startup log enumerates exactly these. Each flagged server can be un-shared by its owner via a PUT request to the server API with "shared": false, or by an administrator directly updating the shared column of the server record; note that un-sharing removes the server from other users' trees and will interrupt anyone relying on the planted entry, which is the intended outcome. Where upgrading is not immediately possible, restricting account creation and the ability to register servers to vetted users reduces the attacker population that can reach either endpoint, and reviewing imported servers.json content before ingest limits the import vector, at the cost of ongoing manual review rather than enforcement.

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

The flaw is a missing-authorization case (CWE-862). pgAdmin's server dialog only renders the 'Shared' switch for the Administrator role, but the underlying REST handlers in web/pgadmin/browser/server_groups/servers/__init__.py accepted and stored the 'shared' flag and 'shared_username' value from any caller allowed to register a server, so the UI-level restriction was never backed by a server-side check. The servers.json import path had a parallel gap in validate_json_data and load_database_servers: a non-administrator's Shared entries were stripped only after validation, meaning a file combining a shared server with a deliberately invalid entry could fail validation early and still leave the shared record created. Because a shared server definition holds connection parameters but no credentials, the mechanism is a naming and trust-abuse play rather than direct credential disclosure, and the upstream fix adds a prepare_sharing_data helper that returns HTTP 403 for non-administrators on create/update, moves the import pruning ahead of validation, strips shared_username from non-admin payloads, stops non-admin server copies from inheriting the shared flag, and logs a startup warning listing servers shared earlier by non-administrators.

Know when the next one hits your stack

  • 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 6.0 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:A/VC:N/VI:L/VA:N/SC:H/SI:N/SA:N
vuln.today AI 7.6 HIGH

Authenticated low-priv registrant (PR:L) plants a shared record (I:L); victim must connect (UI:R); scope changes (S:C) to the victim's database where the captured password yields C:H.

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

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

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

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

Lifecycle Timeline

1
Patch available
Oct 30, 2026 - 21:18 EUVD

DescriptionCVE.org

In pgAdmin 4 server mode only administrators are meant to share a server with all users; the server dialog shows the Shared switch only to them. The create and update endpoints of the server API, however, stored the "shared" flag and shared username they were sent, so any user able to register a server could share one with every other user. The servers.json import had a similar gap: a non-administrator's "Shared" entries were removed only after validation, so a file that also held an invalid entry could create a shared server.

A shared server carries no credentials, so this gives no direct access. It lets a user plant a server, named to look trusted, in every other user's tree and pointing at a host the user controls; anyone who then connects to it presents their own database password to that host.

The fix refuses a non-administrator's request that would share a server with HTTP 403, prunes a non-administrator's shared entries from a servers.json import before validating it, and warns at startup about servers shared earlier by non-administrators.

This issue affects pgAdmin 4: before 9.19.

Threat Intelligence Overview

EPSS Score
0.2%
Top 86% exploitable
Prevalence
Medium
popular PostgreSQL admin tool, but only multi-user server mode is affected
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 MEDIUM
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.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· derived
Medium

Priority Score

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

Attack Technique

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

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