Skip to main content

django-allauth CVE-2025-65430

MEDIUM
Insufficient Session Expiration (CWE-613)
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 OAuth tokens as active IdP user
  2. Exploit
    Account deactivated via is_active=False
  3. Execution
    Reuse still-valid access/refresh tokens
  4. Impact
    Access protected resources post-revocation

Vulnerability Assessment

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

Requires the django-allauth IdP (OAuth2/OpenID Connect identity provider) feature to be in use. The affected party must have been issued access/refresh tokens while their account was active and then had their account set to is_active=False; the flaw is that those previously-issued tokens continued to be accepted. Exploitation is therefore limited to deactivated accounts and only within the lifetime of the already-issued tokens, and it depends on the deployment relying on is_active=False as a revocation mechanism. It does not affect applications that do not use the IdP feature or that revoke sessions by other means.

Impact

This is a genuine but moderate-severity session-management flaw (CWE-613, Insufficient Session Expiration) rather than a high-urgency remote code execution 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) is internally consistent with the description: PR:L correctly reflects that the 'attacker' is a legitimate user who was already issued valid OAuth2/OpenID Connect tokens while their account was active, and C:L/I:L capture continued-but-unauthorized access after deactivation. No EPSS score was supplied in the input, so exploitation probability cannot be quantified. The CVE is NOT in CISA KEV and no POC was indicated - exploitation status is 'no public exploit identified at time of analysis.' The real-world risk is constrained by a narrow precondition: it only matters to deployments that use django-allauth's IdP (identity provider) feature AND rely on setting is_active=False to immediately revoke access (e.g., employee offboarding or incident response). For those deployments the flaw is meaningful because revocation silently failed until tokens expired naturally; for everyone else it is low priority. Signals are not conflicting, but key prioritization data (EPSS, KEV, POC) is simply absent and should be treated as unknown rather than low.

Exploit ScenarioDerived

A user of an application that uses django-allauth as an OAuth2/OpenID Connect identity provider is issued access and refresh tokens while their account is active. An administrator later deactivates the account (is_active=False) - for example during offboarding or after detecting abuse - expecting access to be cut off. Because the pre-issued access/refresh tokens were not rejected, the deactivated user (or anyone holding those tokens) continues to authenticate and reach protected resources until the tokens expire. No public exploit code is required or known; this is straightforward reuse of already-held tokens (AV:N/AC:L/PR:L).

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

Deactivated django-allauth identity-provider accounts retain access to protected resources because OAuth2/OpenID Connect access and refresh tokens issued while the account was active were not rejected after the user was marked is_active=False. This affects django-allauth (allauth-django) releases before 65.13.0, but only deployments that use the built-in IdP feature and rely on is_active=False as their account-revocation mechanism. An authenticated holder of such a token (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N, base 5.4) can keep performing low-impact reads and writes through the IdP until the already-issued tokens expire; no public exploit code was identified at time of analysis and there is no indication of active exploitation. The issue is fixed in 65.13.0.

RemediationAI

Upgrade django-allauth to 65.13.0 or later, where access and refresh tokens belonging to deactivated users are now rejected; the release notes at https://allauth.org/news/2025/10/django-allauth-65.13.0-released/ describe the change. Note that upgrading does not retroactively erase tokens already stored in the database, so if you deactivated accounts while running an affected version, forcibly delete or rotate the corresponding OAuth2 access and refresh token records (for example the allauth token models) as part of the upgrade. If an immediate upgrade is not possible, compensating controls include shortening access/refresh token lifetimes so the exposure window closes quickly, explicitly revoking a user's tokens via the ORM or an administrative action whenever is_active is set to False (at the cost of extra integration work in your deactivation workflow), or disabling the IdP endpoints entirely if the identity-provider feature is unused, which removes the attack surface but also disables OAuth2/OIDC clients that depend on it. Relying on is_active=False alone provides no revocation guarantee on affected versions.

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 widely used Django authentication library that, in addition to classic local login, can act as an OAuth2/OpenID Connect identity provider (IdP) for downstream applications and resource servers. The flaw is rooted in CWE-613 (Insufficient Session Expiration): token validation on the IdP side did not re-check the current state of the user record, so tokens minted while the account was active continued to be honored after the account was flipped to is_active=False. In other words, deactivation was treated as a login-time gate rather than a continuous authorization check, leaving the refresh/access token lifecycle out of sync with the account lifecycle. The CPE cpe:2.3:a:allauth:allauth:*:*:*:*:*:django:*:* identifies all django-allauth versions before 65.13.0 on the Django platform as affected. Applications that never enable the IdP feature, or that terminate access through token revocation or session teardown rather than the is_active flag, are not exposed to this behavior.

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 5.4 MEDIUM

The actor is a previously-authenticated user reusing legitimately issued tokens, so PR:L and AC:L over the network; impact is continued unauthorized read/write access (C:L/I:L) with no availability effect.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:L/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. IdP: marking a user as is_active=False after having handed tokens for that user while the account was still active had no effect. Fixed the access/refresh tokens are now rejected.

Threat Intelligence Overview

EPSS Score
0.2%
Top 95% exploitable
Prevalence
Medium
django-allauth is widely used, but its IdP provider feature is a newer optional component
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

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

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