Authlib accepts unsigned login tokens, letting attackers forge identity
Authlib is a Python library that checks signed tokens to confirm who a user is. A bug lets an attacker send a token with no signature at all, and the library accepts it as genuine, so the attacker can pretend to be any user, including an ad
| Severity | CriticalCVSS 9.1 of 10 |
|---|---|
| Being exploited? | UnclearNo reports either way yet |
| Fix available? | YesAuthlib 1.9.0 · since 27 Oct 2026 |
| How sure is this? | Official sourceBacked by an official source |
How the attack works simplified
- 1Attacker crafts tokenEmpty signatures array with chosen claims
- 2Sends requestToken presented to the application
- 3Authlib verifiesEmpty loop leaves flag as True
- 4Payload trustedForged claims accepted as genuine
- ResultAttacker is accepted as any user
What happened
In Authlib before 1.9.0, JsonWebSignature.deserialize_json() returns the payload as verified when the JWS signatures array is empty, because the validity flag starts as True and is never checked when the loop does not run; no key is consulted.
Are you affected?
You are affected if your application uses Authlib 1.8.0 or earlier and calls JsonWebSignature.deserialize_json() on input it did not create.
| Package / product | Affected versions | Fixed in |
|---|---|---|
| authlib · pip | <= 1.8.0 | 1.9.0 |
What to do
- Upgrade Authlib to 1.9.0 or later (pip install --upgrade authlib)
- Check whether your code calls JsonWebSignature.deserialize_json() on untrusted input and review what claims it trusts
- If you cannot upgrade immediately, stop trusting deserialize_json() results for authentication decisions
Timeline
- 27 Oct 2026, 14:50 UTCPublicly disclosed
- 27 Oct 2026, 14:50 UTCReported by GitHub Advisory · GitHub Advisory
- 27 Oct 2026, 14:51 UTCPicked up by Zero Radar
Sources 1 report, oldest first
Official vendor, government CERT or advisory database
- Authlib: empty signatures validation in JWS JSON deserializationGitHub Advisory · 27 Oct 2026, 14:50 UTC
Technical details
- ID
- CVE-2026-96760 · GHSA-6v38-4h7w-rj9h
- CVSS
- 9.1 / 10
- EPSS
- 0.4% chance of exploitation within 30 days
- Disclosed
- 27 Oct 2026, 14:50 UTC
- On Zero Radar
- 27 Oct 2026, 14:51 UTC (1 min after disclosure)
- Last change
- 27 Oct 2026, 14:51 UTC
The plain-language parts and the attack diagram were written by an AI model (anthropic/claude-haiku-5.5) from the sources above. Facts like versions, exploitation and dates come from the sources themselves. How Zero Radar works