Skip to main content

pgAdmin 4 EUVDEUVD-2026-114381

| CVE-2026-116240 HIGH
Path Traversal (CWE-22)
2026-10-30 f86ef6dc-4d3a-42ad-8f28-e6d5547a5007 GHSA-wp8g-m28w-27c5
7.1
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 pgAdmin server-mode user
  2. Delivery
    Submit crafted storage path via file manager/Query Tool
  3. Exploit
    Bypass check_access_permission via path mismatch or double-decode
  4. Execution
    Perform targeted file read/list/delete/rename
  5. Impact
    Access files outside storage or other users' data

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V5 - File Handling Path canonicalization, traversal prevention
MITRE ATT&CK

2 techniques across 2 tactics: Discovery, Collection

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

Exploitation Conditions

Requires pgAdmin 4 running in server (web, multi-user) mode - desktop mode is explicitly unaffected - and an authenticated pgAdmin account (PR:L). Concrete trigger surfaces named in the description: opening a file in the Query Tool, the Google client-secret path, and (Windows only) Import/Export Data, Backup, Restore and file-save, all of which strip leading slashes/backslashes so a path validated as a name inside storage becomes absolute (POSIX read-anywhere) or drops the storage directory for a drive letter (Windows read/write outside storage); folder listing, which decodes the path a second time after the check so a user-creatable folder named like an encoded '..' lists any host directory; and download/delete/rename/exists, which append the path without a separator so in deployments where one user's storage directory name is a PREFIX of another's, a second user's files can be read, deleted, or moved. Creating a folder can place it in another user's directory. Limiting factors: server mode only, valid account required, several high-impact variants are Windows-specific, and the download/delete/rename cross-user read requires the specific storage-directory-name-prefix condition in a multi-user deployment.

Impact

This is a moderate-severity, authenticated path traversal in pgAdmin 4 server mode, rated 7.1 (High) by the vendor's CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N) - network-reachable and low-complexity, but requiring a valid pgAdmin account (PR:L), which materially limits mass, unauthenticated exploitation. No EPSS score is provided in the input, so exploitation probability cannot be quantified; the vuln is NOT in CISA KEV and no working public exploit is identified. The vuln.today decision label is 'this_week', consistent with a real-but-not-emergency priority. A notable conflict exists between signals: the vendor vector sets VI:N (no integrity impact), yet the description explicitly documents writing outside the storage directory on Windows and deleting, renaming, and moving other users' files - these are integrity impacts the published vector under-reflects, so the real severity is arguably higher than 7.1 on the integrity axis. The public fix commit (ad6c028) discloses the mechanism in detail, which lowers the bar for an attacker to reverse-engineer a working exploit even though no PoC is published. Net: a genuine this-week priority for multi-user pgAdmin server-mode deployments, but not a drop-everything emergency given the authentication requirement and absence of KEV/active-exploitation evidence.

Exploit ScenarioDerived

A low-privileged but authenticated user of a shared pgAdmin 4 server-mode instance submits a crafted file path (e.g., a POSIX path that resolves to an absolute location once leading slashes are stripped, or a folder name containing an encoded '..') through the Query Tool file open or folder-listing feature. Because the path that check_access_permission() validated differs from the path the caller actually opens, the attacker reads files anywhere the pgAdmin service account can access, lists arbitrary host directories, or reads/deletes/renames another tenant's files. No public exploit is identified at time of analysis, but the fix commit publicly reveals the flawed logic.

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

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

Alert me

AnalysisAIv1 – Oct 30, 2026

Path traversal in pgAdmin 4 server mode before 9.19 lets an authenticated user escape their own storage directory and read, write, delete or move files elsewhere on the host - in the POSIX Query Tool and Google client-secret paths, any file the pgAdmin service account can read; on Windows, Import/Export Data, Backup, Restore and file-save can read or write outside storage via a drive-letter path. The defect is a check-versus-use mismatch: check_access_permission() validated a path built by get_abs_path(), while several callers stripped leading separators, double-decoded folder names, or concatenated without a separator, so download/delete/rename can reach another user's files where one storage directory name is a prefix of another's, and folder creation can land in another user's directory. Rated 7.1 High (CVSS 4.0) with high confidentiality and integrity impact in the independent CVSS 3.1 assessment; exploitation needs the multi-user server deployment and a valid account (PR:L), desktop mode is explicitly unaffected, no public exploit code has been identified at time of analysis, and the fix ships in 9.19.

RemediationAI

Vendor-released patch: upgrade to pgAdmin 4 9.19, which makes check_access_permission() return the path it validated so every caller operates on that exact path, decodes folder paths once, and performs open, delete and rename relative to directories opened from the storage directory without following symbolic links (see https://github.com/pgadmin-org/pgadmin4/commit/ad6c028cff625a095676065767c7b80219205d28 and https://github.com/pgadmin-org/pgadmin4/issues/10674). Deployments that only ever run the desktop application are unaffected and need no action, so scoping any interim risk decision to instances actually serving server mode narrows the exposure - with the trade-off that this does not fix anything for web-mode users. If the upgrade must be scheduled rather than applied immediately, note that the cross-user download/delete/rename variant only succeeds where one user's storage directory name is a string prefix of another's, so renaming storage directories to be prefix-free removes that specific path (and does not address the POSIX Query Tool / Google client-secret arbitrary read, the Windows drive-letter read/write outside storage, or the double-decoded folder listing, all of which persist until 9.19 is installed). No other vendor workaround is described in the available sources.

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

pgAdmin 4's server mode is a Flask web application in which each authenticated user gets a storage directory for Query Tool files, client-secret material and backup artefacts; the file-manager module in web/pgadmin/misc/file_manager/__init__.py mediates access to it. CWE-22 (Improper Limitation of a Pathname to a Restricted Directory) arises here not from a single sanitisation gap but from an architectural split between validation and use: check_access_permission() computed an absolute path with get_abs_path(), and multiple call sites then operated on a path they reconstructed independently. Some joined the caller-supplied path after stripping leading '/' and '\\' characters, so a value validated as a plain name inside storage became an absolute path on POSIX, or, on Windows, a path naming a drive that discarded the storage directory entirely. The folder-listing route decoded the path a second time after validation, so a user-creatable directory whose name looks like an encoded '..' escaped the root. Download, delete, rename and the file-exists check appended the path to the storage directory without a path separator, making resolution depend on a shared string prefix between two users' directory names, and the download path additionally validated the path appended to itself. The upstream fix (commit ad6c028cff625a095676065767c7b80219205d28) changes check_access_permission() to return the resolved path and has every caller act on that returned value, decodes folder paths exactly once, and replaces lexical handling with descriptor-relative operations: an _open_parent_beneath() walk that treats '..' as a directory pop rather than a text collapse, O_NOFOLLOW opens so a symlink swapped in after the check is refused (ELOOP, or EMLINK on BSDs; on Linux EMLINK is treated as a genuine link-count error), O_NONBLOCK plus an fstat regular-file check so a planted FIFO cannot hang a request, and rmdir/unlink/rename performed relative to the opened parent directory where the platform supports dir_fd. Desktop mode has no storage directory to escape and is out of scope.

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.1 HIGH
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
vuln.today AI 8.1 HIGH

Authenticated server-mode web user (PR:L, AV:N, AC:L, UI:N) can read arbitrary accessible files (C:H) and, on Windows and cross-user, write/delete/rename files (I:H); availability not the primary impact.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:N/SC:N/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
None
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
None
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
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.1

DescriptionCVE.org

In server mode pgAdmin 4 validates a path into the user's storage directory with check_access_permission(), which builds the absolute path with get_abs_path(). Several callers then acted on a path they built differently, so the path checked and the path used could name different files:

  • Opening a file in the Query Tool, the Google client secret and, on Windows, Import/Export Data, Backup, Restore and saving a file joined the path to the storage directory after stripping leading slashes and backslashes. On POSIX a path checked as a name inside storage could become an absolute path once stripped, so any file the pgAdmin account can read could be opened; on Windows a path naming a drive discarded the storage directory, so these could read, or write, outside it.
  • Listing a folder decoded the path a second time after the check, so a folder named like an encoded "..", which a user can create, listed any directory on the host.
  • Download, delete, rename and the file-exists check appended the path to the storage directory without a separator, so in a deployment where one user's storage directory name is a prefix of another's, another user's files could be read, deleted or moved; download also checked the path appended to itself.
  • Creating a folder could create one in another user's directory.

The fix makes check_access_permission() return the path it checked and every caller act on that path, decodes folder paths once, and opens, deletes and renames files relative to directories opened from the storage directory without following symbolic links. Desktop mode is not affected.

This issue affects pgAdmin 4: before 9.19.

Executive ViewAI

Why It Matters

CVE-2026-116240 is a high-severity path traversal flaw in pgAdmin 4 server mode (before 9.19) that allows any authenticated user to escape their designated storage directory and access, modify, or delete files belonging to other users or the host system. This impacts multi-user deployments where users could compromise data integrity and confidentiality, potentially leading to cross-tenant data leakage or service disruption. Leadership should prioritize remediation due to the high impact on data protection and trust in shared environments.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigations include restricting pgAdmin server mode to trusted networks, enforcing least privilege for the pgAdmin service account, and monitoring for suspicious file access patterns.

Threat Intelligence Overview

EPSS Score
0.3%
Top 82% exploitable
Prevalence
Medium
popular PostgreSQL admin tool, but only multi-user server/web 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 HIGH
CISA KEV No
Public POC No
EPSS 0.3%
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

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

Attack Technique

Path traversal exploits occur when applications use user-controlled input to construct file system paths without proper validation.

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