Skip to main content

pgAdmin 4 EUVDEUVD-2026-114379

| CVE-2026-116238 CRITICAL
Improper Restriction of Excessive Authentication Attempts (CWE-307)
2026-10-30 f86ef6dc-4d3a-42ad-8f28-e6d5547a5007 GHSA-jq9v-4fgp-83ww
9.2
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
    Reach server-mode pgAdmin login page
  2. Delivery
    Post guesses to Flask-Security /login or case-variant username
  3. Exploit
    Bypass MAX_LOGIN_ATTEMPTS lockout
  4. Execution
    Brute-force internal administrator password
  5. Persist
    Authenticate as administrator
  6. Impact
    Access managed database servers and saved credentials

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V6 - Authentication Brute-force prevention, rate limiting
Exploitation Conditions

pgAdmin 4 must run in server (web) mode using internal authentication with the default MAX_LOGIN_ATTEMPTS limit (3); desktop mode is explicitly not affected. Any one of several concrete prerequisites enables the bypass: reachability of Flask-Security's separately registered /login, /verify, /change or /reset views; supplying the target internal username in a different letter case than stored (the lock is looked up by exact username while the form matches email case-insensitively); or a deployment that also configures LDAP or webserver authentication (a wrong internal password is never counted) or Kerberos/webserver authentication (a guess can be answered without being counted). Related impacts require shared email addresses across auth sources (cross-source password reset) or a non-admin user whose email matches an administrator's (About-box server-config disclosure). The principal limiting factor is that the flaw only removes rate limiting - it does not reveal credentials, so compromise still depends on successfully brute-forcing a guessable password against an existing internal account.

Impact

This is a genuine high-priority issue, not a high-score-but-low-risk artifact. The input CVSS 4.0 vector is AV:N/AC:H/AT:P/PR:N/UI:N with VC:H/VI:H/VA:H (score 9.2), and the vuln.today decision label is act_now, so the urgency signals and the network/unauthenticated reach (AV:N, PR:N, UI:N) agree that this warrants prompt remediation. The practical mechanism is low-effort - the patch shows multiple independent ways to bypass the lockout (posting directly to Flask-Security's own /login, /verify, /change and /reset views; typing the internal username in a different letter case so the lock lookup misses; or relying on a coexisting LDAP/webserver/Kerberos source so a wrong internal password is never counted) - so the AC:H/AT:P metrics do NOT reflect a hard-to-reach bug; they instead reflect that the flaw removes the brute-force rate limit rather than directly yielding credentials. Success still depends on guessing the password, which is the attack requirement (AT:P) and the main real-world limiter. No CISA KEV listing is present in the input (so this is not confirmed actively exploited), and no EPSS probability was supplied, so widespread-exploitation likelihood cannot be quantified from the data given. The confirmed worst case is full takeover of a server-mode pgAdmin administrator account, which exposes the saved connection credentials for managed PostgreSQL servers - hence the uniformly High impact rating is credible.

Exploit ScenarioDerived

An attacker who can reach a server-mode pgAdmin 4 web login submits unlimited password guesses against the administrator's internal account - for example by posting to Flask-Security's own /login view, or by sending the admin username in a different letter case - neither of which increments pgAdmin's failed-login counter or trips the default 3-attempt lock. Once a guess succeeds, the attacker logs in as administrator and gains access to the configured database-server connections and their saved passwords. No public exploit identified at time of analysis; the only referenced artifacts are the fix commits and tracking issue.

Act Now Prioritize within 24-48h. Why: CRITICAL severity.
Patch available 0.4% 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 server mode can be forced into unlimited password guessing against internal accounts, including the administrator's, because the three-attempt lockout is not applied consistently across every login path. The bypass is reachable by unauthenticated remote attackers (CVSS v4.0 score 9.2, PR:N) but still depends on guessing a valid password for an existing internal account; the independent assessment rates it CVSS 3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H and assigns an act_now priority. No public exploit identified at time of analysis.

RemediationAI

Vendor-released patch: 9.19. Upgrade pgAdmin 4 to 9.19 or later; the fix is represented by upstream commits 35c9235d17a7d5a99778f01b2f1b9e5e3a3b7fde, 58c531d831179dc9b0a5bf873ccb80c71c8d387a, and c6ef41a951012cd877a1992b5dac681eec36e48d, and tracked in https://github.com/pgadmin-org/pgadmin4/issues/10676. The supplied references do not document a workaround, so updating is the complete remediation. Because practical exploitability depends on password guessability, ensure internal accounts, especially administrator accounts, use strong unique passwords.

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

CWE-307 (Improper Restriction of Excessive Authentication Attempts) is the root-cause class: pgAdmin 4 server mode relies on Flask and Flask-Security for authentication, and the vendor fix shows that Flask-Security registers separate /login, /verify, /change and /reset views alongside pgAdmin's own endpoints without sharing pgAdmin's failed-login counter or lock. Additional gaps arise because the internal account is looked up by exact username while the login form matches email case-insensitively, and because deployments that also configure LDAP, webserver, or Kerberos authentication can count a wrong internal password incorrectly or answer a guess without counting it. The remediation centralizes failed-login counting, performs case-insensitive email lookup for the internal account, refuses submissions to Flask-Security's own views, prevents password-bearing logins from falling back to authentication sources that do not check the password, and scopes lockout to internal authentication only. This is an authentication-brute-force exposure rather than direct credential disclosure: compromise still requires successfully guessing a valid password. Related cross-source password-reset and About-box configuration-disclosure impacts require shared email addresses across authentication sources.

Know when Python 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 9.2 CRITICAL
CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
vuln.today AI 8.1 HIGH

Network-reachable and unauthenticated (AV:N/PR:N/UI:N), but compromise depends on brute-forcing a guessable password so AC:H; successful admin takeover of pgAdmin yields full C/I/A with no scope change.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
4.0 AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/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
None
User Interaction
None
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
High
Vulnerable system: Availability
High
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
CRITICAL 9.2

DescriptionCVE.org

In server mode pgAdmin 4 locks an internal account after MAX_LOGIN_ATTEMPTS failed logins (3 by default). The limit could be bypassed, giving an unauthenticated attacker an unlimited number of password guesses against any internal account, including the administrator's, in the default configuration:

  • Flask-Security registers its own views next to pgAdmin's. A login submitted to its /login view was checked and logged in without pgAdmin's failed login count or lock. Its /verify view checked a signed-in user's password without limit, its /change view changed a password without pgAdmin's change password permission or re-encrypting the user's saved server passwords, and its /reset views sent and applied password resets for accounts that are not internal or are locked.
  • The internal account was looked up by its exact username, while the login form matches the email ignoring case, so a login with the username typed in another case was neither counted nor checked for the lock.
  • With LDAP or webserver authentication also configured, a wrong internal password was never counted, and with Kerberos or webserver authentication configured a guess could be answered without being counted.

In addition, where accounts from different authentication sources share an email address, a password reset could be sent for, or applied to, an account from another source, and the About box showed the server configuration to a user whose email was that of an administrator's account.

The fix refuses submissions to Flask-Security's own views, counts every failed internal login however the username is typed and whatever other sources are configured, no longer lets a login that posts a password fall back to an authentication source that does not check it, and locks only internal authentication. Password resets and the About box act only on the user's own internal account. Desktop mode is not affected.

This issue affects pgAdmin 4: before 9.19.

Executive ViewAI

Why It Matters

CVE-2026-116238 in pgAdmin 4 server mode enables unauthenticated attackers to conduct unlimited password guessing against internal accounts, including administrators. This puts sensitive database management interfaces at risk of unauthorized access, potentially leading to data breaches or system compromise. Leadership should prioritize remediation due to the critical severity and lack of a vendor patch.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigations include restricting access to trusted networks, enforcing strong password policies, enabling MFA, and monitoring for brute-force attempts.

Threat Intelligence Overview

EPSS Score
0.4%
Top 65% exploitable
Prevalence
High
most popular PostgreSQL admin tool; server/web deployments common in enterprises
Data Quality
3 sources
Confidence: Low

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 CRITICAL
CISA KEV No
Public POC No
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
CRITICAL severity
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

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

More in Python

View all
CVE-2025-24016 CRITICAL POC
9.9 Feb 10

Wazuh SIEM platform versions 4.4.0 through 4.9.0 contain an unsafe deserialization vulnerability in the DistributedAPI t

CVE-2025-27520 CRITICAL POC
9.8 Apr 04

BentoML version 1.4.2 and earlier contains an unauthenticated remote code execution vulnerability through insecure deser

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-2013-5093 MEDIUM POC
6.8 Sep 27

The renderLocalView function in render/views.py in graphite-web in Graphite 0.9.5 through 0.9.10 uses the pickle Python

CVE-2025-32375 CRITICAL POC
9.8 Apr 09

BentoML is a Python library for building online serving systems optimized for AI apps and model inference. Rated critica

CVE-2014-0224 HIGH POC
7.4 Jun 05

OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph

CVE-2024-21644 HIGH POC
7.5 Jan 08

pyLoad download manager version prior to 0.5.0b3.dev77 exposes the Flask SECRET_KEY through an unauthenticated endpoint.

CVE-2026-33017 CRITICAL POC
9.3 Mar 17

Langflow (a visual LLM pipeline builder) contains a critical unauthenticated code execution vulnerability (CVE-2026-3301

CVE-2017-9462 HIGH POC
8.8 Jun 06

In Mercurial before 4.1.3, "hg serve --stdio" allows remote authenticated users to launch the Python debugger, and conse

CVE-2026-49869 CRITICAL POC
10.0 Jun 26

Unauthenticated remote code execution affects Kestra OSS (the open-source event-driven orchestration platform) prior to

CVE-2026-39987 CRITICAL POC
9.3 Apr 08

Unauthenticated remote code execution in Marimo ≤0.20.4 allows attackers to execute arbitrary system commands via the `/

CVE-2024-21645 MEDIUM POC
5.3 Jan 08

pyLoad is the free and open-source Download Manager written in pure Python. Rated medium severity (CVSS 5.3), this vulne

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