[ CVE-2026-115910 · Published 26 Oct 2026 ]
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
[ Why it matters ]Priority signals
- Public proof-of-concept exploit exists (CISA SSVC)
[ Description ]Official 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.
[ Fixes ]Fixes and patches
- social-auth-core 6.2.0Fixed version · GitHub Advisories · pip package social-auth-core: upgrade to 6.2.0 or later (affected <= 6.1.1)
[ Packages ]Affected open-source packages
- social-auth-core pipAffected <= 6.1.1 · fixed in 6.2.0 · GHSA-h2r5-x5m7-3935