CVE-2026-114617
Medium · 4.2CVSS
4.2
EPSS
0.3%
Published
Oct 22, 2026
CISA due date
—
Cloudanix analysis
A library used by websites to handle logins with third-party accounts can let an attacker reuse someone else's login token in their own browser, potentially taking over accounts.
- Exploitation
- Requires User Interaction
- Attacker needs
- User Interaction
- Complexity
- High
- Impact
- Data Exposure
- Component
- Library
- Class
- Authentication Bypass
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Authlib's OpenIDMixin.parse_id_token() in both sync and async base_client modules trusts the untrusted nonce_supported boolean claim from a captured validly signed ID token; when false it disables the expected nonce check, allowing replay of the token into a different session while still requiring valid signature/issuer/audience.
Why it matters to the business
Organizations using Authlib for OpenID Connect relying-party code in implicit or hybrid flows risk session hijacking and unauthorized access to user accounts if an attacker obtains a valid ID token, increasing exposure for any application that accepts externally supplied tokens.
How an attack unfolds
An attacker captures a validly signed ID token from a victim session, crafts a request to an attacker-controlled session that supplies the same token to parse_id_token(), and because nonce_supported is set to false the library skips nonce binding validation, successfully replaying the token after it passes signature checks.
How to fix it
Upgrade Authlib to version 1.9.0 or later in all environments; applications using only authorization code flow may defer but should still upgrade; do not rely on nonce_supported claims from ID tokens.
How to confirm the fix worked
Confirm the installed Authlib version is 1.9.0+, review application code for direct calls to parse_id_token() or use of implicit/hybrid flows, and test that a token with nonce_supported=false is rejected when nonce binding is expected.
Typical attack path
- Obtain a validly signed ID token from a victim via network capture or prior compromise
- Initiate an attacker-controlled session against the vulnerable relying party
- Supply the captured token to the endpoint that calls parse_id_token()
- Trigger nonce_supported=false path to bypass session binding
- Gain authenticated access as the victim user
How to detect it
Search application and web-server logs for ID-token parsing events that succeed without a matching session nonce; review any recorded tokens or replay attempts around the time of published disclosure; examine authlib integration modules for nonce handling.
What your security team should do
- Immediately inventory all Python services using Authlib and schedule upgrade to 1.9.0 within the next sprint
- Audit relying-party code for implicit, hybrid, or direct ID-token acceptance paths and enforce nonce binding server-side
- Monitor EPSS trend and re-evaluate if exploit maturity increases given the six-day-old disclosure
The record
Authlib is a Python library which builds OAuth and OpenID Connect servers. Prior to 1.9.0, OpenIDMixin.parse_id_token() reads the nonce_supported decision from the untrusted ID token being validated and sets the expected nonce to null when that claim is the JSON boolean false. In implicit and hybrid relying parties, or applications that directly accept externally supplied ID tokens, an attacker with a captured validly signed token can bypass the nonce-to-session binding and replay the victim's token into an attacker-controlled session. Plain authorization code flow is not affected, and the token must still pass signature, issuer, and audience validation. OpenIDMixin.parse_id_token() trusts nonce_supported in both authlib/integrations/base_client/sync_openid.py and authlib/integrations/base_client/async_openid.py to disable the expected nonce. This issue is fixed in version 1.9.0.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|
Related vulnerabilities
- CVE-2026-104381 A missing authentication vulnerability in Fireware OS's FireCluster state synchronization… CWE-294
- CVE-2026-41020 Eaton easyE4 uses a static nonce during authentication, which could allow an… CWE-294
- CVE-2026-117470 Psono Server CE & EE versions 3.1.0 through 7.2.3 did not consume a stored WebAuthn… CWE-294
- CVE-2026-116201 Snipe-IT before 8.5.0 contains a SAML assertion replay vulnerability that allows… CWE-294
- CVE-2026-65824 OpenReception's appointment booking software provides an end-to-end encrypted appointment… CWE-294
- CVE-2026-87952 Authentication Bypass by Capture-replay vulnerability in Drupal SAML SSO - Service… CWE-294
- CVE-2026-103314 A flaw was found in Red Hat Advanced Cluster Security for Kubernetes (RHACS). CWE-294
- CVE-2026-73636 Authentication bypass by capture-replay in mod_auth_digest in Apache Software Foundation… CWE-294