Skip to main content
Press slash or control plus K to focus the search. Use the arrow keys to navigate results and press enter to open a threat.
Reconnecting to live updates…
EPSS 0.2%top 89%

CVE-2026-7820: Vulnerability in pgadmin.org pgAdmin 4

0
Medium
VulnerabilityCVE-2026-7820cvecve-2026-7820
Published: 05/11/2026 (05/11/2026, 14:35:53 UTC)
Source: CVE Database V5
Vendor/Project: pgadmin.org
Product: pgAdmin 4

Description

Improper restriction of excessive authentication attempts (CWE-307) in pgAdmin 4.pgAdmin enforces MAX_LOGIN_ATTEMPTS only inside its custom /authenticate/login view. Flask-Security's default /login view, which is registered automatically by security.init_app() and is reachable on every server, never consulted the User.locked field: pgAdmin's User model relied on Flask-Security's UserMixin.is_locked() (which always returns 'not locked') and Flask-Login's is_active (which only checks the active column, not locked). An attacker who triggered an account lockout via /authenticate/login could therefore obtain a session by re-submitting valid credentials directly to /login, defeating the brute-force-protection control for accounts using the INTERNAL authentication source. The same bypass also means that login attempts via /login are never rate-limited, so an attacker can perform an unbounded online password-guessing attack against INTERNAL accounts regardless of MAX_LOGIN_ATTEMPTS. Fix overrides User.is_active and User.is_locked() so the locked column is enforced on every authentication path. LDAP, OAuth2, Kerberos, and Webserver users are not reachable by this bypass because they have no local password and are rejected by Flask-Security's LoginForm.validate before the locked check; the lockout itself is also internal-only (the /authenticate/login view filters by auth_source=INTERNAL). This issue affects pgAdmin 4: before 9.15.

CVSS v3.1

Score 6.5medium

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
Low
Integrity
Low
Availability
None
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N

Affected software

GitHub Actionsmore threats →ai
pgadmin-org/pgadmin4
pkg:github/pgadmin-org/pgadmin4
Affected versions
<9.15

Run on your own infrastructure? Check whether these packages are installed with threat-finder — our free open-source scanner.

AI-Powered Analysis

Machine-generated threat intelligence

AILast updated: 05/11/2026, 15:52:59 UTC

Technical Analysis

pgAdmin 4 versions prior to 9.15 have an improper restriction of excessive authentication attempts (CWE-307) vulnerability. The application enforces MAX_LOGIN_ATTEMPTS only on its custom /authenticate/login endpoint, but the default Flask-Security /login endpoint does not check the User.locked field due to reliance on UserMixin.is_locked() which always returns 'not locked'. Consequently, attackers can bypass account lockout by submitting credentials directly to /login, enabling unlimited online password guessing attacks against INTERNAL authentication accounts. The fix involves overriding User.is_active and User.is_locked() to enforce the locked status on all authentication paths. External authentication methods are not affected because they do not use local passwords and are rejected before the locked check.

Potential Impact

An attacker can bypass brute-force protection controls for INTERNAL authentication accounts by using the /login endpoint instead of /authenticate/login, allowing unlimited password guessing attempts. This could lead to unauthorized access to accounts with valid credentials. The impact is limited to INTERNAL authentication users; other authentication methods are not affected. There is no indication of denial of service or privilege escalation beyond account compromise.

Mitigation Recommendations

Patch status is not yet confirmed — check the vendor advisory for current remediation guidance. Until a fix is available, administrators should consider restricting access to the /login endpoint or implementing additional external rate limiting controls to mitigate brute-force attacks on INTERNAL accounts. Monitoring for unusual authentication activity targeting INTERNAL users may also help detect exploitation attempts.

Pro Console: star threats, build custom feeds, automate alerts via Slack, email & webhooks.Upgrade to Pro

Technical Details

Data Version
5.2
Assigner Short Name
PostgreSQL
Date Reserved
2026-05-04T21:27:01.217Z
Cvss Version
3.1
State
PUBLISHED
Remediation Level
null

Threat ID: 6a01f795cbff5d86102f219c

Added to database: 05/11/2026, 15:36:53 UTC

Last enriched: 05/11/2026, 15:52:59 UTC

Last updated: 07/31/2026, 19:23:00 UTC

Views: 106

Community Reviews

0 reviews

Crowdsource mitigation strategies, share intel context, and vote on the most helpful responses. Sign in to add your voice and help keep defenders ahead.

Sort by
Loading community insights…

Want to contribute mitigation steps or threat intel context? Sign in or create an account to join the community discussion.

Actions

PRO

Updates to AI analysis require Pro Console access. Upgrade inside Console → Billing.

Please log in to the Console to use AI analysis features.

Need more coverage?

Upgrade to Pro Console for AI refresh and higher limits.

For incident response and remediation, OffSeq services can help resolve threats faster.

Latest Threats

Breach by OffSeqOFFSEQFRIENDS — 25% OFF

Check if your credentials are on the dark web

Instant breach scanning across billions of leaked records. Free tier available.

Scan now
OffSeq TrainingCredly Certified

Lead Pen Test Professional

Technical5-day eLearningPECB Accredited
View courses