5.9
MEDIUM CVSS 3.1
CVE-2025-68481
FastAPI Users Vulnerable to 1-click Account Takeover in Apps Using FastAPI SSO
Description

FastAPI Users allows users to quickly add a registration and authentication system to their FastAPI project. Prior to version 15.0.2, the OAuth login state tokens are completely stateless and carry no per-request entropy or any data that could link them to the session that initiated the OAuth flow. `generate_state_token()` is always called with an empty `state_data` dict, so the resulting JWT only contains the fixed audience claim plus an expiration timestamp. On callback, the library merely checks that the JWT verifies under `state_secret` and is unexpired; there is no attempt to match the state value to the browser that initiated the OAuth request, no correlation cookie, and no server-side cache. Any attacker can hit `/authorize`, capture the server-generated state, finish the upstream OAuth flow with their own provider account, and then trick a victim into loading `.../callback?code=<attacker_code>&state=<attacker_state>`. Because the state JWT is valid for any client for \~1 hour, the victim’s browser will complete the flow. This leads to login CSRF. Depending on the app’s logic, the login CSRF can lead to an account takeover of the victim account or to the victim user getting logged in to the attacker's account. Version 15.0.2 contains a patch for the issue.

INFO

Published Date :

Dec. 19, 2025, 9:15 p.m.

Last Modified :

Dec. 19, 2025, 9:15 p.m.

Remotely Exploit :

Yes !
Affected Products

The following products are affected by CVE-2025-68481 vulnerability. Even if cvefeed.io is aware of the exact versions of the products that are affected, the information is not represented in the table below.

No affected product recoded yet

CVSS Scores
The Common Vulnerability Scoring System is a standardized framework for assessing the severity of vulnerabilities in software and systems. We collect and displays CVSS scores from various sources for each CVE.
Score Version Severity Vector Exploitability Score Impact Score Source
CVSS 3.1 MEDIUM [email protected]
Solution
Update FastAPI Users to version 15.0.2 or later to fix CSRF vulnerability in OAuth login.
  • Update FastAPI Users to version 15.0.2 or later.
  • Ensure state tokens are properly validated.
  • Implement server-side session correlation.
  • Add state data to tokens.
CWE - Common Weakness Enumeration

While CVE identifies specific instances of vulnerabilities, CWE categorizes the common flaws or weaknesses that can lead to vulnerabilities. CVE-2025-68481 is associated with the following CWEs:

Common Attack Pattern Enumeration and Classification (CAPEC)

Common Attack Pattern Enumeration and Classification (CAPEC) stores attack patterns, which are descriptions of the common attributes and approaches employed by adversaries to exploit the CVE-2025-68481 weaknesses.

CAPEC-1: Accessing Functionality Not Properly Constrained by ACLs Accessing Functionality Not Properly Constrained by ACLs CAPEC-5: Blue Boxing Blue Boxing CAPEC-13: Subverting Environment Variable Values Subverting Environment Variable Values CAPEC-17: Using Malicious Files Using Malicious Files CAPEC-39: Manipulating Opaque Client-based Data Tokens Manipulating Opaque Client-based Data Tokens CAPEC-45: Buffer Overflow via Symbolic Links Buffer Overflow via Symbolic Links CAPEC-51: Poison Web Service Registry Poison Web Service Registry CAPEC-59: Session Credential Falsification through Prediction Session Credential Falsification through Prediction CAPEC-60: Reusing Session IDs (aka Session Replay) Reusing Session IDs (aka Session Replay) CAPEC-76: Manipulating Web Input to File System Calls Manipulating Web Input to File System Calls CAPEC-77: Manipulating User-Controlled Variables Manipulating User-Controlled Variables CAPEC-87: Forceful Browsing Forceful Browsing CAPEC-104: Cross Zone Scripting Cross Zone Scripting CAPEC-127: Directory Indexing Directory Indexing CAPEC-402: Bypassing ATA Password Security Bypassing ATA Password Security CAPEC-647: Collect Data from Registries Collect Data from Registries CAPEC-668: Key Negotiation of Bluetooth Attack (KNOB) Key Negotiation of Bluetooth Attack (KNOB) CAPEC-62: Cross Site Request Forgery Cross Site Request Forgery CAPEC-111: JSON Hijacking (aka JavaScript Hijacking) JSON Hijacking (aka JavaScript Hijacking) CAPEC-462: Cross-Domain Search Timing Cross-Domain Search Timing CAPEC-467: Cross Site Identification Cross Site Identification

We scan GitHub repositories to detect new proof-of-concept exploits. Following list is a collection of public exploits and proof-of-concepts, which have been published on GitHub (sorted by the most recently updated).

Results are limited to the first 15 repositories due to potential performance issues.

The following list is the news that have been mention CVE-2025-68481 vulnerability anywhere in the article.

The following table lists the changes that have been made to the CVE-2025-68481 vulnerability over time.

Vulnerability history details can be useful for understanding the evolution of a vulnerability, and for identifying the most recent changes that may impact the vulnerability's severity, exploitability, or other characteristics.

  • New CVE Received by [email protected]

    Dec. 19, 2025

    Action Type Old Value New Value
    Added Description FastAPI Users allows users to quickly add a registration and authentication system to their FastAPI project. Prior to version 15.0.2, the OAuth login state tokens are completely stateless and carry no per-request entropy or any data that could link them to the session that initiated the OAuth flow. `generate_state_token()` is always called with an empty `state_data` dict, so the resulting JWT only contains the fixed audience claim plus an expiration timestamp. On callback, the library merely checks that the JWT verifies under `state_secret` and is unexpired; there is no attempt to match the state value to the browser that initiated the OAuth request, no correlation cookie, and no server-side cache. Any attacker can hit `/authorize`, capture the server-generated state, finish the upstream OAuth flow with their own provider account, and then trick a victim into loading `.../callback?code=<attacker_code>&state=<attacker_state>`. Because the state JWT is valid for any client for \~1 hour, the victim’s browser will complete the flow. This leads to login CSRF. Depending on the app’s logic, the login CSRF can lead to an account takeover of the victim account or to the victim user getting logged in to the attacker's account. Version 15.0.2 contains a patch for the issue.
    Added CVSS V3.1 AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:L/A:N
    Added CWE CWE-352
    Added CWE CWE-285
    Added Reference https://github.com/fastapi-users/fastapi-users/blob/bcee8c9b884de31decb5d799aead3974a0b5b158/fastapi_users/router/oauth.py#L111
    Added Reference https://github.com/fastapi-users/fastapi-users/blob/bcee8c9b884de31decb5d799aead3974a0b5b158/fastapi_users/router/oauth.py#L57
    Added Reference https://github.com/fastapi-users/fastapi-users/commit/7cf413cd766b9cb0ab323ce424ddab2c0d235932
    Added Reference https://github.com/fastapi-users/fastapi-users/security/advisories/GHSA-5j53-63w8-8625
EPSS is a daily estimate of the probability of exploitation activity being observed over the next 30 days. Following chart shows the EPSS score history of the vulnerability.
Vulnerability Scoring Details
Base CVSS Score: 5.9
Attack Vector
Attack Complexity
Privileges Required
User Interaction
Scope
Confidentiality Impact
Integrity Impact
Availability Impact