Skip to main content

pgAdmin 4 CVE-2026-116251

| EUVDEUVD-2026-114392 LOW
Insufficient Session Expiration (CWE-613)
2026-10-30 f86ef6dc-4d3a-42ad-8f28-e6d5547a5007 GHSA-wrw6-r8xj-f49j
2.3
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
    Obtain victim's old password or session cookie
  2. Exploit
    Establish an authenticated pgAdmin session
  3. Execution
    Victim or admin changes/resets the password to revoke access
  4. Impact
    Stale session stays valid, retaining DB access until expiry

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V7 - Session Management Session expiration enforcement
Exploitation Conditions

Exploitation requires that the attacker ALREADY possesses the victim's pre-change password or a valid pre-change pgAdmin session cookie, and that a password change or administrator reset then occurs for that user. The vulnerability only manifests in that window: the stale session remains usable from the change until its natural session expiry - it grants no new access on its own. Affected deployments are pgAdmin 4 before 9.19. Limiting factors: the attacker needs prior credential or cookie compromise (PR:L), the benefit depends on a password-change event happening (AT:P), and the exposure self-heals when the old session expires; the issue applies equally to a user's own change-password dialog and to admin resets in User Management, including shared-server saved passwords.

Impact

All available signals point to genuinely low priority. The supplied CVSS 4.0 vector (AV:N/AC:H/AT:P/PR:L/UI:N) scores only 2.3, and the vuln.today decision label is 'monitor' - not act_now or emergency. There is no CISA KEV listing, no EPSS probability provided in the input, and no exploit code: the two references are the fix commit and the GitHub issue, i.e. patch/source artifacts, not a PoC. Exploitation status is therefore 'no public exploit identified at time of analysis'. The CWE-613 nature reinforces this: the flaw does not grant new access but allows an attacker who ALREADY holds the victim's old password or a valid session cookie to retain access past the exact moment (a password change or admin reset) that was meant to revoke it. The AT:P (attack requirement present) and AC:H reflect that the attacker must already possess prior credentials/cookie and that a password-change event must occur - this is a defense-in-depth session-hygiene gap, not a remotely weaponizable entry point. No signals conflict; low CVSS, 'monitor' label, absent KEV, and absent exploit code all agree this is a low-real-risk hardening fix rather than an active threat.

Exploit ScenarioDerived

An attacker who previously captured a pgAdmin user's password or session cookie (e.g. on a shared or formerly-trusted device) keeps an authenticated session open. The legitimate user or an administrator, suspecting compromise, changes or resets the password specifically to lock the attacker out - but on versions before 9.19 the attacker's pre-existing session stays logged in and usable until it naturally expires. No public exploit code exists; the referenced links are the fix commit and issue, not a PoC.

Monitor Track and reassess. Why: LOW severity (CVSS 0.1-3.9).
Patch available 0.1% 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 invalidate a user's existing sessions when that user's password is changed, whether through the user's own change-password dialog or through an administrator reset in User Management. Authenticated attackers who already hold the victim's pre-change password or a stolen pre-change session cookie retain a usable session from the moment of the change until that session naturally expires, so the very action intended to cut off access does not do so. The assessed impact is limited (CVSS 3.1: AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:N) and exploitation is conditional on prior credential or cookie compromise plus a password-change event; no public exploit has been identified at time of analysis, and the vendor has released a fix in 9.19 that rotates the session identifier on password change.

RemediationAI

Upgrade pgAdmin 4 to 9.19 or later, which rotates the user's fs_uniquifier on password change and thereby forces logout of every other session; the fix is the upstream commit https://github.com/pgadmin-org/pgadmin4/commit/67eab1ba891d24209eb0d4bac050dcc8068d93b7 referenced from https://github.com/pgadmin-org/pgadmin4/issues/10646. After upgrading, note the operational side effects described by the vendor: the session that performs the change is re-logged in and keeps its database connections, saved server passwords are re-encrypted under the new key, and any saved password that cannot be decrypted (or all of them, if re-encryption fails) is cleared, so users may be prompted to re-enter credentials on next connect. Until patched, treat a password change or admin reset as insufficient to terminate access: revoke the affected user's sessions out of band by restarting the pgAdmin service or clearing/rotating the session signing material, accept the resulting logout of all users, and where the concern is a stolen cookie, additionally rotate any stored credentials reachable from that account. Note that these workarounds do not re-encrypt saved server passwords, so those remain protected only by the old key until the upgrade is applied.

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 is a Flask web application that uses Flask-Security for authentication and Flask-Login for session management. Each user row carries an fs_uniquifier value, an identity key that Flask-Security embeds in the session so that changing it invalidates every session tied to the old value. The root cause is CWE-613 (Insufficient Session Expiration): the change-password code path updated the stored password hash but never rotated fs_uniquifier, so sessions created before the change continued to authenticate against the same identity key. The upstream fix (commit 67eab1ba891d24209eb0d4bac050dcc8068d93b7) calls _security.datastore.set_uniquifier as part of the password change and commits it together with the new password before any password re-encryption work, then re-logs in the session that performed the change (preserving a 'remember me' cookie via REMEMBER_COOKIE_NAME) so the legitimate user stays logged in. Because this session's connection managers were tagged with the old uniquifier, the fix also adds driver.rebind_session_managers to keep that session's open database connections and transactions alive. Saved server passwords, including those for shared servers, are re-encrypted under the new key last, and any entry that cannot be decrypted is cleared with a message to the user; if re-encryption throws, the password change and session revocation are not rolled back, the saved passwords are cleared instead, and the user is told to re-enter them. The related utils.py change adds a None guard in _password_check and imports ObjectGone around the saved-password migration helpers.

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 2.3 LOW
CVSS:4.0/AV:N/AC:H/AT:P/PR:L/UI:N/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N
vuln.today AI 4.2 MEDIUM

Attacker must already hold the victim's old credential or session cookie and a password change must occur, so PR:L and AC:H; access yields limited DB read/write, hence C:L/I:L/A:N.

3.1 AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:N
4.0 AV:N/AC:H/AT:P/PR:L/UI:N/VC:L/VI:L/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
High
Attack Requirements
Present
Privileges Required
Low
User Interaction
None
Vulnerable system: Confidentiality
Low
Vulnerable system: Integrity
Low
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

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

DescriptionCVE.org

pgAdmin 4 did not invalidate a user's existing sessions when their password changed, either through the user's own change password dialog or through an administrator resetting it in User Management. A session established before the change, for example on another device or by someone who had obtained the old password or a session cookie, therefore stayed logged in after the change, which is the step a user or administrator takes precisely to cut such access off. It remained usable until it expired.

The fix rotates the user's session identifier (fs_uniquifier) whenever the password is changed, so every other session of that user is logged out. The session that made the change is logged in again and keeps its database connections. Saved server passwords, including those for shared servers, are re-encrypted under the new key; any that cannot be decrypted are cleared and the user is told. If re-encryption fails, the sessions are still revoked and the saved passwords are cleared rather than the change failing.

This issue affects pgAdmin 4: before 9.19.

Threat Intelligence Overview

EPSS Score
0.1%
Top 99% exploitable
Prevalence
Medium
pgAdmin is the common PostgreSQL GUI admin tool, widely but not universally 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 LOW
CISA KEV No
Public POC No
EPSS 0.1%
Patch available Yes
Active threat No
Deciding rule
LOW severity (CVSS 0.1-3.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
Defer
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Low

Priority Score

12
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +12
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.

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