Skip to main content

django-allauth CVE-2025-65431

MEDIUM
Improper Authentication (CWE-287)
2025-12-15 cve@mitre.org
5.4
CVSS 3.1 · Vendor: mitre
View

Attack ChainAIDerived

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

  1. Access
    Obtain account at Okta/NetIQ IdP
  2. Delivery
    Set preferred_username to match victim identifier
  3. Exploit
    Authenticate to allauth-backed app
  4. Execution
    allauth maps session to victim account
  5. Impact
    Access victim data and privileges

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V6 - Authentication Authentication mechanism validation
MITRE ATT&CK

2 techniques across 2 tactics: Defense Evasion, 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 the django-allauth deployment to be configured with the Okta or NetIQ third-party login provider specifically - other providers are unaffected because only these two used the mutable 'preferred_username' claim as the account identifier. The attacker must possess a valid account at that identity provider (PR:L) and be able to set or change their 'preferred_username' value to collide with a target user's identifier; there is no user-interaction requirement (UI:N). Limiting factors: deployments not using Okta/NetIQ SSO are not exploitable, and the IdP's own controls over whether 'preferred_username' can be freely modified by an end user constrain feasibility. Upgrading to django-allauth 65.13.0 (which switches these providers to the immutable 'sub' claim) removes the condition entirely.

Impact

This is a moderate-severity authentication/authorization flaw (CWE-287) in django-allauth, not an urgent, widely-exploitable issue. The provided CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N, base 5.4) indicates network reach but requires the attacker to already hold privileges (PR:L) - consistent with needing a valid account at the identity provider. No EPSS score, KEV listing, or POC was provided, so there is no evidence of active exploitation or public exploit code; the risk is therefore theoretical/targeted rather than widespread. Importantly, exploitation is strictly gated: it only affects deployments that use Okta or NetIQ as third-party (social) login providers, because only those two providers used the mutable 'preferred_username' claim as the account identifier. The practical risk is a targeted account-takeover opportunity where an attacker who can alter their own 'preferred_username' at the IdP to match a victim's could be mapped onto the victim's local account. I would prioritize this for organizations using django-allauth with Okta/NetIQ SSO, and treat it as low urgency otherwise. Note a tension between the vendor-assigned C:L/I:L and the real impact: a successful identifier collision can yield full takeover of the victim's application account, which is arguably higher impact than L/L suggests.

Exploit ScenarioDerived

An application uses django-allauth (pre-65.13.0) with Okta or NetIQ SSO. An attacker who controls an account at that identity provider changes their 'preferred_username' to match the value associated with a victim's account; because allauth keyed the local account on this mutable claim rather than the stable 'sub', the attacker's login is mapped onto the victim's account, resulting in account takeover. No public exploit code was identified at time of analysis, and the attack requires the attacker to possess and manipulate an IdP account.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.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 – Oct 14, 2026

Authentication bypass in django-allauth versions before 65.13.0 allows an authenticated attacker with a valid Okta or NetIQ identity provider account to impersonate other users by modifying the mutable 'preferred_username' claim used as the account identifier, potentially leading to account takeover. This moderate-severity flaw (CWE-287) only affects deployments configured with these specific third-party login providers, and exploitation requires the attacker to be able to set or change their preferred_username value. No public exploit code or active exploitation has been identified at time of analysis; the vendor has released patch 65.13.0 which switches to the immutable 'sub' claim.

RemediationAI

Upgrade to django-allauth version 65.13.0 or later, which switches the Okta and NetIQ providers to use the immutable 'sub' claim for account identification; this is the definitive fix and removes the vulnerability entirely. If immediate upgrade is not possible, consider disabling the Okta and NetIQ third-party login providers in your django-allauth configuration, or ensure that the 'preferred_username' claim cannot be modified by users at the identity provider (though this may not be under your control). Disabling these providers will prevent users from logging in via Okta or NetIQ until the patch is applied. Monitor authentication logs for suspicious account linking or access anomalies. See the vendor advisory at https://allauth.org/news/2025/10/django-allauth-65.13.0-released/ for details.

Affected Packages

pypi django-allauth fix: 65.13.0

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in pypi

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 Django library that provides authentication and third-party (social) login integrations. The vulnerability resides in its Okta and NetIQ provider backends, which incorrectly used the 'preferred_username' claim from the identity provider's token as the unique account identifier for authorization decisions. Because 'preferred_username' is mutable and can often be changed by the user at the identity provider, an attacker could set it to the value of a target user's identifier and gain unauthorized access to that user's account. The root cause is CWE-287: Improper Authentication, as the system relied on a non-immutable identifier. The fix in version 65.13.0 changes these providers to use the 'sub' claim, which is immutable and unique. Other third-party providers in django-allauth were not affected because they used different, immutable claims.

Know when 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 5.4 MEDIUM
AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N
vuln.today AI 6.8 MEDIUM

Attacker needs an IdP account and must engineer a mutable-claim collision (PR:L, AC:H); on success it yields full takeover of the victim's app account (C:H/I:H), no availability impact.

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

Primary rating from Vendor (mitre).

CVSS VectorVendor: mitre

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

DescriptionCVE.org

An issue was discovered in allauth-django before 65.13.0. Both Okta and NetIQ were using preferred_username as the identifier for third-party provider accounts. That value may be mutable and should therefore be avoided for authorization decisions. The providers are now using sub instead.

Blast Radius

ecosystem impact
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 1 pypi packages depend on django-allauth (1 direct, 0 indirect)

Ecosystem-wide dependent count for version 65.13.0.

Threat Intelligence Overview

EPSS Score
0.2%
Top 95% exploitable
Prevalence
Medium
very popular Django auth library, but flaw limited to Okta/NetIQ SSO configs
Data Quality
2 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 MEDIUM
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.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· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Medium

Priority Score

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

Affected Products (CPE)CVE.org

cpe:2.3:a:allauth:allauth:*:*:*:*:*:django:*:*

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