Skip to main content
Vulnerability Database/CVE-2026-96760

CVE-2026-96760: Authlib Signature Verification Bypass

CVE-2026-96760 is a signature verification bypass flaw in Authlib that allows attackers to forge JWS tokens without cryptographic keys. This post explains its technical details, affected versions, and mitigation steps.

Published:

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 Attacks

Detection 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.

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.