Skip to main content

django-allauth EUVDEUVD-2026-86517

| CVE-2026-97764 LOW
Incorrect Behavior Order: Validate Before Canonicalize (CWE-180)
2026-09-25 mitre GHSA-qwgm-hfpp-4pf6
3.7
CVSS 3.1 · Vendor: mitre
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Identify site using django-allauth login
  2. Delivery
    Generate diacritic variants of target identifier
  3. Exploit
    Submit failed logins across variants to evade throttle
  4. Execution
    Exceed intended attempt limit
  5. Impact
    Brute-force password guessing at higher effective rate

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Leading special element handling
Exploitation Conditions

Requires a django-allauth deployment (before 65.19.4) whose failed-login rate limiting is enabled and where login identifiers (username/email) accept diacritics/accented characters that are not normalized before the throttle counter is applied - the description scopes this to 'some common configurations.' Limiting factors: high attack complexity (AC:H), the attack only degrades throttling rather than granting access directly (still requires an underlying weak/guessable credential to succeed), and it depends on the specific normalization/config behavior rather than working against all default setups.

Impact

This is a low-severity, defense-in-depth weakness, not a directly exploitable breach. The CVSS 3.1 base score is 3.7 (AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:N): network-reachable and unauthenticated, but high attack complexity and only Low integrity impact with no confidentiality or availability impact. CWE-180 (incorrect ordering of canonicalization vs. validation) accurately captures the root cause - the failed-login rate limiter counts attempts against the raw submitted identifier before diacritics are normalized, so accented variants create separate counters and inflate the effective attempt ceiling. No EPSS score, no CISA KEV listing, and no public exploit are present in the input, so exploitation status is 'no public exploit identified at time of analysis.' Signals are consistent rather than conflicting: low CVSS, no exploitation telemetry, and an available vendor patch all point to a real-but-minor hardening fix. The one nuance worth stating explicitly is that the tag 'Information Disclosure' does not match the mechanics - the flaw weakens brute-force throttling (integrity/control bypass, I:L), it does not disclose data (C:N). Priority is low: patch on normal maintenance cadence unless the deployment relies heavily on allauth's login rate limiting as a primary brute-force control.

Exploit ScenarioDerived

An attacker running an online password-guessing campaign against a Django site using django-allauth submits login attempts using diacritic variants of a target username or email (e.g., 'admín' alongside 'admin'). Because the throttle counts each variant separately before normalization, the attacker gets substantially more guesses than the configured limit before lockout, improving brute-force odds. No public exploit code is identified, and high attack complexity plus dependence on common-but-specific configurations limits reliability.

Monitor Track and reassess. Why: LOW severity (CVSS 0.1-3.9).
Patch available 0.2% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Sep 25, 2026

Bypass of failed-login rate limiting in django-allauth before 65.19.4 allows unauthenticated remote attackers to obtain a higher effective number of login attempts in certain common configurations by submitting diacritic variants of the same username or email. The flaw is a low-severity defense-in-depth weakness, not a directly exploitable breach: CVSS 3.1 score 3.7 with AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:N, requiring specific normalization and rate-limit configuration behavior; it does not grant access without an underlying weak or guessable credential. Vendor-released patch: 65.19.4. No public exploit identified at time of analysis, and no CISA KEV active-exploitation confirmation was provided.

RemediationAI

Upgrade django-allauth to 65.19.4 or later; vendor-released patch: 65.19.4. If immediate upgrade is not possible, apply the upstream commits referenced in the advisory or add application-layer canonicalization for login identifiers before incrementing failed-login counters, such as Unicode NFKC normalization, case folding, and diacritic stripping, while ensuring the normalized form matches the actual account lookup path. Supplementary controls include enabling CAPTCHA or MFA after repeated failures and monitoring for distributed failed attempts across diacritic variants. Trade-offs: normalization can alter how accented usernames or email addresses are treated and may break legitimate logins if not aligned with existing account records; CAPTCHA or MFA adds user friction; aggressive lockout thresholds can create denial-of-service risk. Consult the vendor release notes at https://docs.allauth.org/en/latest/release-notes/recent.html and the PyPI project page at https://pypi.org/project/django-allauth/ for the fixed release.

Affected VersionsENISA

django-allauth 0.25.0 <65.19.4

Affected Packages

euvd django_allauth fix: 65.19.4

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

django-allauth is a widely used Django authentication, registration, and account-management package distributed via PyPI. The affected CPE is cpe:2.3:a:allauth:django-allauth:*:*:*:*:*:*:*:* and the vendor scope is versions before 65.19.4. The root cause aligns with CWE-180 (Incorrect Behavior Order: Validate Before Canonicalize): failed-login throttle accounting is reportedly applied to the raw submitted login identifier before Unicode/diacritic normalization, so accented or otherwise equivalent variants of a username or email can be counted as distinct keys. This inflates the effective attempt budget only when rate limiting is enabled and identifiers accept diacritics; it does not itself authenticate the attacker. The assessed CVSS vector AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:N means remote unauthenticated exploitation with high complexity and limited integrity impact, with no confidentiality or availability impact. The high complexity reflects dependence on the deployment's throttle configuration and identifier normalization behavior rather than broad default exploitability.

Know when Django Allauth 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 (mitre) PRIMARY 3.7 LOW
AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:N
vuln.today AI 3.7 LOW

Network-reachable and unauthenticated (PR:N) but gated on specific config and diacritic-accepting identifiers (AC:H); only weakens brute-force throttling, so I:L with C:N/A:N.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:N
4.0 AV:N/AC:H/AT:N/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (mitre).

CVSS VectorVendor: mitre

Attack Vector
Network
Attack Complexity
High
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
Low
Availability
None

DescriptionCVE.org

django-allauth before 65.19.4 does not have the expected limits on failed login attempts because, in some common configurations, an attacker can leverage the handling of diacritics (e.g., accents) for a higher effective limit.

Threat Intelligence Overview

EPSS Score
0.2%
Top 88% exploitable
Prevalence
High
de-facto authentication/social-login library across the Django web ecosystem
Data Quality
6 sources
Confidence: High

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.2%
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
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
High
Technical Impact
Partial

Priority Score

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