CVE-2026-96760 Overview
CVE-2026-96760 is a signature verification bypass vulnerability in Authlib versions 1.7.2 and earlier. The JsonWebSignature.deserialize_json() method accepts a JSON Serialization JWS (JSON Web Signature) object and returns the payload as verified without validating the signature. The method also does not require a cryptographic key during deserialization. Applications relying on Authlib for JWS validation may accept forged or tampered tokens as authentic, undermining authentication and authorization controls built on top of the library.
Critical Impact
Attackers can forge JWS tokens and have them accepted as verified by any application using the vulnerable deserialize_json() method, enabling authentication bypass and trust boundary violations.
Affected Products
- Authlib version 1.7.2
- All Authlib versions prior to 1.7.2
- Python applications and services that call JsonWebSignature.deserialize_json() for JWS validation
Discovery Timeline
- 2026-09-28 - CVE-2026-96760 published to NVD
- 2026-09-30 - Last updated in NVD database
Technical Details for CVE-2026-96760
Vulnerability Analysis
Authlib is a widely used Python library implementing OAuth, OpenID Connect, and JSON Object Signing and Encryption (JOSE) standards. The JsonWebSignature.deserialize_json() method is intended to parse and verify JWS objects serialized in the JSON Serialization format defined by RFC 7515. The vulnerable implementation returns the payload marked as verified even when the signature is missing, malformed, or unverifiable. The method also does not require callers to supply a cryptographic key, which normally anchors the trust decision. Applications that treat the returned payload as authentic will accept arbitrary attacker-controlled data as if it were signed by a trusted issuer.
Root Cause
The root cause is missing signature verification logic in the JSON Serialization deserialization path. The method conflates parsing with validation and short-circuits the cryptographic check. Because no key parameter is required, there is no enforcement point where the signature would be validated against a known public key or shared secret.
Attack Vector
An attacker crafts a JWS in JSON Serialization format containing an arbitrary payload and either an invalid signature or no signature at all. The attacker submits the token to any endpoint that validates JWS input using deserialize_json(). The library returns the payload as verified, allowing the attacker to impersonate users, elevate privileges, or bypass integrity checks that depend on JWS assurances. Technical details are available in CERT Vulnerability Notice #762428 and the Authlib GitHub repository.
Detect Identity Attacks the Moment Authentication Fails
Singularity™ Identity surfaces credential misuse, lateral movement, and privilege escalation in real time, so you can contain the breach before it spreads.
Stop Identity AttacksDetection Methods for CVE-2026-96760
Indicators of Compromise
- Successful authentication events using JWS tokens with signatures that do not match any known issuer key
- JWS tokens in JSON Serialization format submitted to endpoints that previously received only Compact Serialization tokens
- Requests containing JWS payloads with unusual or empty signature fields in the JSON structure
Detection Strategies
- Inventory Python applications and dependencies to identify use of Authlib at or below version 1.7.2
- Perform static analysis for call sites of JsonWebSignature.deserialize_json() and review whether returned payloads feed into trust decisions
- Log and inspect JWS tokens at ingress, comparing the declared alg header and signature against the expected issuer key material
Monitoring Recommendations
- Alert on authentication anomalies such as sudden increases in token acceptance rates or logins from unexpected identity claims
- Monitor application dependency manifests (requirements.txt, Pipfile.lock, poetry.lock) for pinned vulnerable Authlib versions
- Capture full request bodies containing JWS objects to enable retroactive analysis after patching
How to Mitigate CVE-2026-96760
Immediate Actions Required
- Upgrade Authlib to a fixed release above version 1.7.2 as soon as it is available from the Authlib project
- Audit all code paths that invoke JsonWebSignature.deserialize_json() and confirm signatures are independently verified before trusting the payload
- Reject JWS tokens in JSON Serialization format at the edge if the application only expects Compact Serialization
Patch Information
Refer to the Authlib GitHub repository for the fixed release and changelog. Consult CERT Vulnerability Notice #762428 for coordinated disclosure details and vendor guidance.
Workarounds
- Replace calls to deserialize_json() with a verification path that explicitly accepts a key and validates the signature, such as JsonWebSignature.deserialize_compact() with a trusted key, where compatible
- Wrap Authlib JWS validation in application code that re-verifies the signature using an independent JOSE library until an upstream fix is deployed
- Restrict accepted alg values to a known allowlist and reject tokens where signature bytes are empty or fail structural checks
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

