Authlib: Discovery metadata poisoning via missing issuer-origin binding
Summary
Authlib 1.7.2 and earlier cache OpenID Connect discovery metadata without validating it or binding the returned endpoint URLs to the origin of the configured metadata URL. A poisoned or manipulated discovery response can therefore replace the token, userinfo, JWKS and logout endpoints with attacker-controlled URLs. Authlib then sends authorization codes, client secrets and bearer tokens to these endpoints without rejecting them. Exploitation requires the ability to tamper with the discovery response or cache, for example through a compromised CDN, upstream or network position.
Affected
- Authlib 1.7.2 and below (per CVE record and vendor-reported research)
- Versions 1.8.0 and later: unconfirmed; a third-party report claims 1.8.0 is affected, not verified
Fixed in
Unknown. VulDB recommends 1.7.3 or later, but this is not confirmed by an Authlib release note or advisory. Do not assume 1.7.3, 1.8.x or 1.9.x is fixed until the Authlib advisory confirms it.
Workaround
- No vendor-published workaround.
- Pin the discovery URL and expected issuer in configuration.
- Ensure discovery requests use HTTPS with certificate validation.
- Keep the metadata cache lifetime short.
- If you maintain an application based on Authlib, add an issuer-match check on the discovery metadata until a fix is confirmed.
Exploitation
- CISA SSVC: exploitation status 'poc', automatable: yes, technical impact: total.
- Not listed as known exploited; no CISA KEV entry found.
- Public proof of concept: unconfirmed. The referenced blog post is tagged 'exploit' but could not be verified.
- Preconditions per VulDB: the attacker must be able to manipulate the initial discovery response or intercept cache updates. This may conflict with the 9.8 CVSS vector, which assumes no privileges and no user interaction.
Our recommendation
- Inventory Authlib in all Python projects, including transitive dependencies (lockfiles, SBOM).
- Prioritise internet-facing services that fetch OIDC discovery documents from external identity providers.
- Apply the discovery hardening measures above now.
- Watch the Authlib GitHub advisories and NVD for an official fixed version, and verify it before upgrading.
- Do not confuse this with CVE-2026-96760, a separate JWS signature bypass affecting the same versions.
Public exploits
PoC-in-GitHub, Metasploit and Exploit-DB list nothing for this CVE.
Research sources
- Researcher write-up (uziii2208) uziii2208.github.io
- VulDB vuldb.com
- OpenCVE record app.opencve.io
- Ubuntu security tracker ubuntu.com
- OSV (Debian) osv.dev
- Hol Guard CVE entry hol.org
- Authlib changelog docs.authlib.org
- CERT/CC VU#762428 (CVE-2026-96760) kb.cert.org
Researched and written up in English and German by an AI (Claude by Anthropic) based on NVD, CISA, EPSS and the sources listed. The vendor information is authoritative. Researched on 30 Oct 2026, 21:34.
Original description (NVD)
Authlib version 1.7.2 and below contains a vulnerability where discovery JSON metadata is cached without validation or issuer-origin binding. This allows a poisoned discovery response to replace all endpoint values with attacker-controlled values rather than endpoint URLs that share the origin of the configured server metadata URL.
Sources
The tracker combines official, freely usable data sources – updated continuously:
- NVD (NIST) – CVEs, rating (CVSS), affected products
- CISA KEV – vulnerabilities confirmed by CISA as actively exploited
- CISA Vulnrichment – CISA assessment (SSVC) in the official CVE record
- FIRST EPSS – probability of exploitation
- Microsoft MSRC – Patch Tuesday: vulnerabilities, severity, updates
- PoC-in-GitHub – public proof-of-concept repositories
- Metasploit (Rapid7) – modules of the Metasploit Framework
- Exploit-DB (OffSec) – archive of public exploits (links only)
- Patch days: official vendor pages (linked per vendor) (Vendor patch days)
This product uses data from the NVD API but is not endorsed or certified by the NVD. EPSS data © FIRST.org.
Affected? We can help.
We check whether your systems are affected, install updates and close the gap – continuously with the System Health Checker if you wish.
