Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain pgAdmin credentials
-
DeliveryGain filesystem write access via misconfiguration or chained CVE
-
ExploitCraft malicious pickle payload with RCE code
-
ExecutionWrite payload to sessions directory
-
PersistTrigger session loading
-
ImpactExecute code as pgAdmin process
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A08:2025 - Software or Data Integrity Failures
ASVS 5.0
V1 - Encoding and Sanitization Safe deserialization, type allowlists
MITRE ATT&CK
2 techniques across 2 tactics: Execution, Initial Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires three specific prerequisites: (1) Valid authentication to pgAdmin 4 as any user role-no privilege escalation within pgAdmin is needed beyond basic authenticated access. (2) Filesystem write permission to the pgAdmin sessions directory, typically /var/lib/pgadmin/sessions/ or configured SERVER_MODE session path-achievable through world-writable directory misconfiguration (chmod 777 or 775 with attacker in group), container volume mount permissiveness, or chaining with a separate path-traversal or arbitrary-file-write vulnerability in pgAdmin or underlying web server. (3) pgAdmin 4 version earlier than 9.15 using FileBackedSessionManager (default for file-based sessions). Attack vector is local (AV:L) meaning the attacker needs shell access to the server filesystem, not just HTTP access to pgAdmin web interface, limiting remote-only attack scenarios. The AC:H (high complexity) rating reflects that write access to a protected system directory requires either administrative error or exploitation of an additional vulnerability, not standard pgAdmin functionality. Database-backed session configurations are not affected. |
| Impact | Real-world risk is elevated for multi-tenant or shared-hosting pgAdmin deployments but constrained by multiple prerequisites. CVSS 7.0 (High) reflects local attack vector (AV:L), high attack complexity (AC:H), and low privileges required (PR:L). The AC:H rating correctly captures that exploitation demands both authenticated access AND filesystem write permission to sessions directory-not achievable in typical single-admin PostgreSQL environments with proper file permissions. EPSS score unavailable, but the attack chain complexity (requiring privilege escalation or configuration error) suggests targeted rather than opportunistic exploitation. Not present in CISA KEV, indicating no confirmed widespread active exploitation. The severity is real for environments with: (1) web-accessible pgAdmin with multiple user accounts, (2) misconfigured session-directory permissions (world-writable or group-writable), or (3) unpatched path-traversal bugs allowing arbitrary file writes. Organizations running pgAdmin in containerized/isolated environments with principle-of-least-privilege filesystem controls face materially lower risk than CVSS suggests. Priority should escalate for pgAdmin instances exposed to untrusted authenticated users or deployed on shared infrastructure. |
| Exploit ScenarioDerived | An attacker with valid pgAdmin credentials leverages misconfigured world-writable permissions on /var/lib/pgadmin/sessions/ (common in quick-start Docker deployments with volume mount errors). They generate a malicious Python pickle payload embedding os.system() calls to establish reverse shell, serialize it to a crafted session file matching pgAdmin's naming convention, and write it to the sessions directory. When pgAdmin's FileBackedSessionManager attempts to load any session (including the planted file during periodic cleanup or user session lookup), the unsafe pickle.load() executes the embedded payload before HMAC validation, granting the attacker shell access as the postgres or pgadmin process user with database administrative privileges. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – May 11, 2026
Unsafe Python pickle deserialization in pgAdmin 4 FileBackedSessionManager allows authenticated local users with session-directory write access to execute arbitrary code as the pgAdmin process. The vulnerability arises from deserializing session files before validating their HMAC signature, enabling payload injection through crafted pickle objects. Attackers require both valid authentication and filesystem write permission to the sessions directory-achievable through misconfiguration or chaining with a separate path-traversal vulnerability. EPSS exploitation probability and KEV status not provided; no public exploit code identified at time of analysis. PostgreSQL maintainers confirmed the flaw and patched it in version 9.15 by implementing pre-deserialization HMAC validation.
RemediationAI
Upgrade pgAdmin 4 to version 9.15 or later, which implements HMAC signature verification before deserialization as documented in https://github.com/pgadmin-org/pgadmin4/issues/9901. For environments unable to upgrade immediately, implement compensating controls with understanding of their operational impact: (1) Restrict session-directory filesystem permissions to the pgAdmin process user only (chmod 700), preventing write access by any other user or service-verify this does not break application functionality if pgAdmin runs under multiple process identities. (2) Switch to database-backed session storage instead of FileBackedSessionManager, noting this introduces PostgreSQL database dependency and potential performance trade-offs for high-concurrency deployments. (3) Deploy pgAdmin in isolated containers or VMs with read-only filesystem mounts for the sessions directory, accepting that session persistence will fail and users must re-authenticate after restarts. (4) Monitor session directory for unauthorized file modifications using filesystem audit tools (auditd, OSSEC), though this provides detection not prevention. None of these workarounds eliminate the underlying deserialization risk-patching to 9.15 remains the definitive solution.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in pypi, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
pgAdmin 4 is the web-based administration platform for PostgreSQL database management. The FileBackedSessionManager component stores user session state as serialized Python objects in filesystem files. Python's pickle module, used for object serialization, is inherently unsafe when deserializing untrusted data-arbitrary code embedded in pickle bytecode executes during load(). The original implementation followed the anti-pattern of deserialize-then-verify: reading session files with pickle.load() before checking HMAC integrity. This CWE-502 deserialization flaw mirrors classic vulnerabilities in Redis, Apache Spark, and other systems using unsafe object serialization. The fix follows defense-in-depth principles by prepending a 64-byte SHA-256 HMAC (keyed with SECRET_KEY) to each session file and validating via constant-time comparison (hmac.compare_digest) before any pickle operations, preventing object-injection attacks even if an attacker writes to the sessions directory.
Know when Pgadmin 4 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
Sources disagree (Low–High)CVSS:4.0/AV:L/AC:H/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
vuln.today treats the vendor’s rating as authoritative. A higher third-party CVSS (e.g. CISA-ADP) is shown for transparency but does not drive the headline severity.
CVSS VectorVendor: PostgreSQL
Lifecycle Timeline
3DescriptionCVE.org
Deserialization of untrusted data (CWE-502) in pgAdmin 4 FileBackedSessionManager.
The session manager performed unsafe deserialization of session-file contents (using Python's standard object-serialization module) before performing any HMAC integrity check. Any file dropped into the sessions directory was deserialized unconditionally. An authenticated user with write access to the sessions directory (whether by misconfiguration or in combination with another path-traversal flaw) could plant a crafted serialized payload to achieve operating-system level remote code execution under the pgAdmin process identity.
Fix prepends a 64-byte hex SHA-256 HMAC over the session body, computed with SECRET_KEY, and verifies it via hmac.compare_digest before any deserialization. The check is raised (rather than asserted) on empty SECRET_KEY so it is not stripped under -O.
This issue affects pgAdmin 4: before 9.15.
Executive ViewAI
pgAdmin 4 versions prior to 9.15 contain an unsafe pickle deserialization vulnerability in the FileBackedSessionManager that allows authenticated users with write access to the session directory to execute arbitrary code with pgAdmin process privileges. Organizations running affected pgAdmin instances should treat this as a critical integrity and confidentiality risk, particularly in environments where session directories may be accessible through misconfiguration or related vulnerabilities.
Vendor-released patch: pgAdmin 4 version 9.15. Until patched: restrict filesystem write permissions on pgAdmin session directories to the application process owner only; disable local user shell access to the host where session files are stored; implement file integrity monitoring on the sessions directory to detect unauthorized modifications; consider network segmentation to limit authenticated access to pgAdmin.
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
Insecure deserialization occurs when an application converts serialized data (a stream of bytes representing an object's state) back into a living object without proper validation.
Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.
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
Remote unauthenticated access to two SQL Editor endpoints in pgAdmin 4 server-mode deployments (versions 6.9 through 9.1
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
Remote SQL injection via prompt injection in pgAdmin 4 versions 9.13 through 9.15 allows attackers who can write content
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_
Authorization bypass and privilege escalation in pgAdmin 4 server mode allows authenticated users to access other users'
pgAdmin <= 8.5 is affected by XSS vulnerability in /settings/store API response json payload. Rated medium severity (CVS
Same weakness CWE-502 – Deserialization of Untrusted Data
View allVendor StatusVendor
SUSE
Severity: Low| Product | Status |
|---|---|
| SUSE Linux Enterprise Desktop 15 SP7 | Fixed |
| SUSE Linux Enterprise High Performance Computing 15 SP7 | Fixed |
| SUSE Linux Enterprise Module for Python 3 15 SP7 | Fixed |
| SUSE Linux Enterprise Server 15 SP7 | Fixed |
| SUSE Linux Enterprise Server for SAP Applications 15 SP7 | Fixed |
| SUSE Linux Enterprise High Performance Computing 15 SP4 | Fixed |
| SUSE Linux Enterprise High Performance Computing 15 SP4-LTSS | Fixed |
| SUSE Linux Enterprise High Performance Computing 15 SP5 | Fixed |
| SUSE Linux Enterprise High Performance Computing 15 SP5-LTSS | Fixed |
| SUSE Linux Enterprise Module for Python 3 15 SP6 | Fixed |
| SUSE Linux Enterprise Module for Server Applications 15 SP4 | Fixed |
| SUSE Linux Enterprise Module for Server Applications 15 SP5 | Fixed |
| SUSE Linux Enterprise Server 15 SP4 | Fixed |
| SUSE Linux Enterprise Server 15 SP4-LTSS | Fixed |
| SUSE Linux Enterprise Server 15 SP5 | Fixed |
| SUSE Linux Enterprise Server 15 SP5-LTSS | Fixed |
| SUSE Linux Enterprise Server 15 SP6 | Fixed |
| SUSE Linux Enterprise Server 15 SP6-LTSS | Fixed |
| SUSE Linux Enterprise Server for SAP Applications 15 SP6 | Fixed |
| SUSE Manager Proxy 4.3 | Fixed |
| SUSE Manager Proxy LTS 4.3 | Fixed |
| SUSE Manager Retail Branch Server 4.3 | Fixed |
| SUSE Manager Retail Branch Server LTS 4.3 | Fixed |
| SUSE Manager Server 4.3 | Fixed |
| SUSE Manager Server LTS 4.3 | Fixed |
| SUSE CaaS Platform 4.0 | Fixed |
| SUSE Enterprise Storage 6 | Fixed |
| SUSE Enterprise Storage 7 | Fixed |
| SUSE Enterprise Storage 7.1 | Fixed |
| SUSE Linux Enterprise Desktop 15 SP6 | Fixed |
| SUSE Linux Enterprise High Performance Computing 15 SP1 | Fixed |
| SUSE Linux Enterprise High Performance Computing 15 SP1-ESPOS | Fixed |
| SUSE Linux Enterprise High Performance Computing 15 SP1-LTSS | Fixed |
| SUSE Linux Enterprise High Performance Computing 15 SP2 | Fixed |
| SUSE Linux Enterprise High Performance Computing 15 SP2-ESPOS | Fixed |
| SUSE Linux Enterprise High Performance Computing 15 SP2-LTSS | Fixed |
| SUSE Linux Enterprise High Performance Computing 15 SP3 | Fixed |
| SUSE Linux Enterprise High Performance Computing 15 SP3-ESPOS | Fixed |
| SUSE Linux Enterprise High Performance Computing 15 SP3-LTSS | Fixed |
| SUSE Linux Enterprise High Performance Computing 15 SP4-ESPOS | Fixed |
| SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS | Fixed |
| SUSE Linux Enterprise High Performance Computing 15 SP6 | Fixed |
| SUSE Linux Enterprise Module for Server Applications 15 SP1 | Fixed |
| SUSE Linux Enterprise Module for Server Applications 15 SP2 | Fixed |
| SUSE Linux Enterprise Module for Server Applications 15 SP3 | Fixed |
| SUSE Linux Enterprise Real Time 15 SP2 | Fixed |
| SUSE Linux Enterprise Real Time 15 SP3 | Fixed |
| SUSE Linux Enterprise Real Time 15 SP4 | Fixed |
| SUSE Linux Enterprise Server 15 SP1 | Fixed |
| SUSE Linux Enterprise Server 15 SP1-BCL | Fixed |
| SUSE Linux Enterprise Server 15 SP1-LTSS | Fixed |
| SUSE Linux Enterprise Server 15 SP2 | Fixed |
| SUSE Linux Enterprise Server 15 SP2-BCL | Fixed |
| SUSE Linux Enterprise Server 15 SP2-LTSS | Fixed |
| SUSE Linux Enterprise Server 15 SP3 | Fixed |
| SUSE Linux Enterprise Server 15 SP3-BCL | Fixed |
| SUSE Linux Enterprise Server 15 SP3-LTSS | Fixed |
| SUSE Linux Enterprise Server for SAP Applications 15 SP1 | Fixed |
| SUSE Linux Enterprise Server for SAP Applications 15 SP2 | Fixed |
| SUSE Linux Enterprise Server for SAP Applications 15 SP3 | Fixed |
| SUSE Linux Enterprise Server for SAP Applications 15 SP4 | Fixed |
| SUSE Linux Enterprise Server for SAP Applications 15 SP5 | Fixed |
| SUSE Manager Proxy 4.0 | Fixed |
| SUSE Manager Proxy 4.1 | Fixed |
| SUSE Manager Proxy 4.2 | Fixed |
| SUSE Manager Retail Branch Server 4.0 | Fixed |
| SUSE Manager Retail Branch Server 4.1 | Fixed |
| SUSE Manager Retail Branch Server 4.2 | Fixed |
| SUSE Manager Server 4.0 | Fixed |
| SUSE Manager Server 4.1 | Fixed |
| SUSE Manager Server 4.2 | Fixed |
| openSUSE Leap 15.3 | Fixed |
| openSUSE Leap 15.4 | Fixed |
| openSUSE Leap 15.5 | Fixed |
EUVD-2026-29086
GHSA-4rhg-h8f2-v4jm
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB