Skip to main content
← All vulnerabilities
CVE-2026-115910EUVD-2026-109993GHSA-H2R5-X5M7-3935

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

Published
Last modified
published
Not listed in CISA KEV
Fix
Fixed in 6.2.0
None on Exploit-DB, Metasploit or GitHub

Summary

Python Social Auth, a social login library for Python web applications, is affected when using its OpenID Connect backend in the default configuration with PKCE disabled. An attacker who obtains a victim's unused authorization code could log in as the victim, gaining access to the victim's account.

Summarized by anthropic/claude-haiku-5.5. Verify details against the original sources.

Read the original 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.

Timeline

  1. CVE published
  2. First seen by cve.now

Affected versions

  • python-social-auth social-core

    fixed in 6.2.0

  • social-auth-corePyPI

    fixed in 6.2.0

References 4

GitHub · python-social-auth/social-core