Description
Python Social Auth is a social authentication and registration mechanism. Prior to 6.2.0, OpenIdConnectAuth in social_core/backends/open_id_connect.py uses get_and_store_nonce to place the OpenID Connect nonce in a shared OpenIdConnectAssociation table, and get_nonce and validate_claims verify only that the nonce exists and has not expired rather than binding it to the browser session and OAuth state that initiated the login. An attacker who obtains a victim's unused authorization code can start a separate login to obtain valid state for the attacker's browser, submit the victim's code with that state, and pass nonce validation because the victim nonce is globally available. With DEFAULT_USE_PKCE disabled in the default OpenIdConnectAuth configuration, the attacker can be logged in as the victim. This issue is fixed in version 6.2.0.
Published: 2026-10-26
Score: 6.8 Medium
EPSS: n/a
KEV: No
Impact: Impersonation via stolen authorization code
Action: Patch Immediately
AI Analysis

Impact

The vulnerability exists in the OpenIdConnectAuth backend of the python-social-auth social‑core package prior to version 6.2.0. The OpenID Connect nonce is stored in a shared table and the validation logic only checks its existence and expiration, never tying it to the browser session or OAuth state that started the login. An attacker who obtains an unused authorization code issued to a victim can initiate a separate login flow to generate a valid state for the attacker’s session, submit the victim’s code with that state, and pass the nonce verification because the nonce is globally available. This chain of actions allows the attacker to be logged in as the victim, resulting in unauthorized access. The flaw reflects improper verification of data authenticity (CWE‑345) and a lack of session scope enforcement for OAuth (CWE‑384).

Affected Systems

Python Social Auth’s social‑core backend component, specifically OpenID Connect support in versions 6.1.x and earlier. Applications that have integrated python-social-auth/social‑core for social authentication with OpenID Connect and have not updated to version 6.2.0 or later are affected.

Risk and Exploitability

The CVSS score of 6.8 denotes a medium severity. The EPSS score is not available, and the issue is not listed in the CISA KEV catalogue, indicating no widespread exploitation reports yet. Attackers would need access to an unused authorization code, which can be obtained through phishing, credential compromise, or intercepting network traffic. By creating a separate login that generates a state value tied to the attacker’s session, the attacker can replay the victim’s authorization code and succeed in the nonce validation. This results in successful impersonation of the victim user. The likely attack vector is therefore a credential replay attack facilitated by the misbinding of the nonce to the session.

Generated by OpenCVE AI on October 26, 2026 at 18:27 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade python-social-auth to version 6.2.0 or later to ensure the nonce is bound to the session and OAuth state.
  • Enable DEFAULT_USE_PKCE on the OpenID Connect backend to enforce the use of a code challenge and bind the authorization code to the browser session.
  • Review OAuth configuration and ensure that the state parameter and nonce are stored and validated in session‑specific storage, not globally.

Generated by OpenCVE AI on October 26, 2026 at 18:27 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Mon, 26 Oct 2026 18:45:00 +0000

Type Values Removed Values Added
First Time appeared Python-social-auth
Python-social-auth social-core
Vendors & Products Python-social-auth
Python-social-auth social-core

Mon, 26 Oct 2026 17:00:00 +0000

Type Values Removed Values Added
Description Python Social Auth is a social authentication and registration mechanism. Prior to 6.2.0, OpenIdConnectAuth in social_core/backends/open_id_connect.py uses get_and_store_nonce to place the OpenID Connect nonce in a shared OpenIdConnectAssociation table, and get_nonce and validate_claims verify only that the nonce exists and has not expired rather than binding it to the browser session and OAuth state that initiated the login. An attacker who obtains a victim's unused authorization code can start a separate login to obtain valid state for the attacker's browser, submit the victim's code with that state, and pass nonce validation because the victim nonce is globally available. With DEFAULT_USE_PKCE disabled in the default OpenIdConnectAuth configuration, the attacker can be logged in as the victim. This issue is fixed in version 6.2.0.
Title Python Social Auth: OpenID Connect nonce is not bound to the browser session, so a stolen authorization code logs the attacker in as the victim
Weaknesses CWE-345
CWE-384
References
Metrics cvssV3_1

{'score': 6.8, 'vector': 'CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:N'}


Subscriptions

Python-social-auth Social-core
cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-10-26T16:44:34.337Z

Reserved: 2026-10-23T20:21:45.106Z

Link: CVE-2026-115910

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Awaiting Analysis

Published: 2026-10-26T17:17:18.597

Modified: 2026-10-26T18:34:17.050

Link: CVE-2026-115910

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-10-26T18:30:14Z

Weaknesses
  • CWE-345

    Insufficient Verification of Data Authenticity

  • CWE-384

    Session Fixation