{"id":"CVE-2026-115910","kind":"vulnerability","aliases":["CVE-2026-115910"],"related":[],"title":"Python Social Auth: shared OIDC nonce lets an attacker log in as victim","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.","summary":"Python Social Auth's OpenID Connect backend stores nonces in a shared table and does not bind them to the browser session or OAuth state, so a nonce can be reused across logins. An attacker holding a victim's unused authorization code can submit it with their own state and be logged in as the victim when PKCE is disabled.","severity":"medium","cvss":6.8,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["oidc","package","python","social-auth","web-auth"],"not_affected_if":["not-using-openid-connect","pkce-enabled","version-6.2.0-or-later"],"how_to_check":"- Check the installed version of `social-auth-core` (for example `pip show social-auth-core`) and confirm it is below `6.2.0`.\n- Look for `OpenIdConnectAuth` in use and check whether `DEFAULT_USE_PKCE` is disabled or unset in settings.","fix":"- Upgrade `social-auth-core` to `6.2.0` or later.\n- Enable PKCE by setting `DEFAULT_USE_PKCE` to true in the social auth settings as an additional mitigation.","status":"open","published_at":"2026-10-26T17:17:18+00:00","first_seen_at":"2026-10-26T17:31:22+00:00","triaged_at":"2026-10-26T17:33:12+00:00","updated_at":"2026-10-26T17:33:12+00:00","category":"package","confidence":0.7,"triage":{"at":"2026-10-26T17:33:12Z","model":"claude-haiku-5-5","output":{"fix":"- Upgrade `social-auth-core` to `6.2.0` or later.\n- Enable PKCE by setting `DEFAULT_USE_PKCE` to true in the social auth settings as an additional mitigation.","reach":"internet","title":"Python Social Auth: shared OIDC nonce lets an attacker log in as victim","impact":"high","summary":"Python Social Auth's OpenID Connect backend stores nonces in a shared table and does not bind them to the browser session or OAuth state, so a nonce can be reused across logins. An attacker holding a victim's unused authorization code can submit it with their own state and be logged in as the victim when PKCE is disabled.","category":"package","nicknames":[],"who_cares":["python","social-auth","oidc","web-auth"],"confidence":0.7,"needs_auth":"unknown","worst_case":"Attacker logs in as a victim user, gaining their account","analyst_note":"","how_to_check":"- Check the installed version of `social-auth-core` (for example `pip show social-auth-core`) and confirm it is below `6.2.0`.\n- Look for `OpenIdConnectAuth` in use and check whether `DEFAULT_USE_PKCE` is disabled or unset in settings.","needs_analyst":false,"not_affected_if":["not-using-openid-connect","version-6.2.0-or-later","pkce-enabled"],"who_is_affected":"Applications using Python Social Auth with the OpenIdConnectAuth backend on versions before 6.2.0, where the authorization code can be obtained by an attacker, for example via interception. Projects that do not use OpenID Connect login through this library, or that already run 6.2.0 or later, can skip it.","user_interaction":"yes","needs_special_setup":"yes","severity_if_unknown":"medium"},"cost_usd":0.000659,"input_tokens":3489,"output_tokens":620,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-115910':16A,19A '-2026':15A,18A '6.2.0':101C,221C 'across':60B 'attack':9A,63B,154C,174C,207C 'auth':3A,25B,28B,31B,91C 'authent':95C 'author':69B,161C 'avail':195C 'backend':35B 'bind':45B,140C 'browser':49B,144C,176C 'claim':127C 'code':70B,162C,181C 'configur':205C 'connect':34B,115C 'core/backends/open_id_connect.py':105C 'cve':14A,17A 'default':197C,203C 'disabl':88B,200C 'exist':133C 'expir':137C 'fix':218C 'get':107C,123C 'global':194C 'hold':64B 'initi':150C 'issu':216C 'let':7A 'log':10A,80B,210C 'login':61B,152C,167C 'mechan':98C 'nonc':6A,37B,56B,110C,116C,124C,132C,187C,192C 'oauth':52B,147C 'obtain':156C,169C 'oidc':5A,20B 'openid':33B,114C 'openidconnectassoci':120C 'openidconnectauth':102C,204C 'packag':21B 'pass':186C 'pkce':86B,199C 'place':112C 'prior':99C 'python':1A,22B,29B,89C 'rather':138C 'registr':97C 'reus':59B 'separ':166C 'session':50B,145C 'share':4A,40B,119C 'social':2A,24B,30B,90C,94C,104C 'social-auth':23B 'start':164C 'state':53B,77B,148C,171C,184C 'store':36B,109C 'submit':72B,177C 'tabl':41B,121C 'unus':68B,160C 'use':106C,198C 'valid':126C,170C,188C 'verifi':128C 'version':220C 'victim':13A,66B,84B,158C,179C,191C,214C 'web':27B 'web-auth':26B","nicknames":[],"mitigations":[],"who_affected":"Applications using Python Social Auth with the OpenIdConnectAuth backend on versions before 6.2.0, where the authorization code can be obtained by an attacker, for example via interception. Projects that do not use OpenID Connect login through this library, or that already run 6.2.0 or later, can skip it.","tier":"C","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-26T17:17:18+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:N","cvss_by":"security-advisories@github.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-115910","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-115910","severity":null,"published_at":"2026-10-26T17:17:18+00:00","modified_at":"2026-10-26T17:17:18+00:00","first_seen_at":"2026-10-26T17:31:22+00:00","fetched_at":"2026-10-26T17:31:22+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}