CVE-2025-59420
NoneCVSS
—
EPSS
0.3%
Published
Sep 22, 2025
CISA due date
—
Cloudanix analysis
A flaw in a Python library used for secure login tokens could let attackers slip past security checks when different systems handle the same tokens differently.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Low
- Impact
- Privilege Gain
- Component
- Library
- Class
- Authentication Bypass
- Remediation
- Upgrade
- Effort
- Low
- Patch risk
- Low
What it actually does
JWS verification accepts tokens declaring unknown critical header parameters (crit), violating RFC 7515 must-understand semantics and enabling acceptance of tokens rejected by strict verifiers.
Why it matters to the business
In mixed verification environments this flaw can allow unauthorized access, token replay, or escalation of privileges, increasing operational risk for services relying on OAuth or OpenID Connect tokens.
How an attack unfolds
An attacker crafts a signed JWS token containing an unknown critical header parameter such as bork or cnf, submits it to an Authlib-based verifier that accepts the token while stricter implementations reject it, and thereby bypasses policy checks or replays the token for privilege escalation.
How to fix it
Upgrade Authlib to version 1.6.4 or later; the fix is present in commit 09a51855747c13771a74958e233a6bf1fd143741. Review and enforce consistent token validation across all verifiers in the environment.
How to confirm the fix worked
Confirm the installed Authlib version is 1.6.4 or newer; test verification behavior with a token containing an unknown critical header to ensure it is now rejected.
Typical attack path
- Identify services using Authlib for JWS token verification
- Craft a validly signed token that includes an unknown crit header value
- Submit the token to the target endpoint
- Observe acceptance where policy or other verifiers would reject it
- Leverage acceptance for replay, policy bypass, or privilege escalation
How to detect it
Search application and authentication logs for JWS tokens containing unexpected or unknown values in the crit header field; monitor for verification successes on tokens that declare non-standard critical parameters.
What your security team should do
- Upgrade all Authlib installations to 1.6.4 immediately
- Audit token validation logic for reliance on crit header enforcement
- Implement logging of crit header values on incoming tokens
- Test mixed-language verification fleets for consistent behavior
The record
Authlib is a Python library which builds OAuth and OpenID Connect servers. Prior to version 1.6.4, Authlib’s JWS verification accepts tokens that declare unknown critical header parameters (crit), violating RFC 7515 “must‑understand” semantics. An attacker can craft a signed token with a critical header (for example, bork or cnf) that strict verifiers reject but Authlib accepts. In mixed‑language fleets, this enables split‑brain verification and can lead to policy bypass, replay, or privilege escalation. This issue has been patched in version 1.6.4.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| PyPI | authlib | 0 | 1.6.4 |
| Chainguard | mlflow | 0 | 3.4.0-r1 |
| Chainguard | mlflow-bitnami | 0 | 3.4.0-r1 |
| Chainguard | mlflow-iamguarded-compat | 0 | 3.4.0-r1 |
| Chainguard | open-webui | 0 | 0.6.30-r1 |
| Chainguard | open-webui-compat | 0 | 0.6.30-r1 |
| Chainguard | pgadmin4 | 0 | 9.8-r1 |
| Chainguard | pgadmin4-oci-entrypoint | 0 | 9.8-r1 |
| Chainguard | pgadmin4-pg12 | 0 | 9.8-r1 |
| Chainguard | pgadmin4-pg13 | 0 | 9.8-r1 |
| Chainguard | pgadmin4-pg14 | 0 | 9.8-r1 |
| Chainguard | pgadmin4-pg15 | 0 | 9.8-r1 |
| Chainguard | pgadmin4-pg16 | 0 | 9.8-r1 |
| Chainguard | pgadmin4-pg17 | 0 | 9.8-r1 |
| Debian:11 | python-authlib | 0 | No fix |
| Debian:12 | python-authlib | 0 | No fix |
| Debian:13 | python-authlib | 0 | No fix |
| Debian:14 | python-authlib | 0 | 1.6.4-1 |
| Wolfi | mlflow | 0 | 3.4.0-r1 |
| Wolfi | mlflow-bitnami | 0 | 3.4.0-r1 |
| Wolfi | mlflow-iamguarded-compat | 0 | 3.4.0-r1 |
| Wolfi | open-webui | 0 | 0.6.30-r1 |
| Wolfi | open-webui-compat | 0 | 0.6.30-r1 |
Related vulnerabilities
- CVE-2026-28802 Authlib is a Python library which builds OAuth and OpenID Connect servers. Also affects authlib
- GHSA-fg6f-75jq-6523 Authlib has 1-click Account Takeover vulnerability Also affects authlib
- CVE-2025-68158 Authlib is a Python library which builds OAuth and OpenID Connect servers. Also affects authlib
- CVE-2025-62706 Authlib : JWE zip=DEF decompression bomb enables DoS Also affects authlib
- CVE-2025-61920 Authlib is vulnerable to Denial of Service via Oversized JOSE Segments Also affects authlib
- CVE-2026-25645 Requests is a HTTP library. Also affects mlflow
- CVE-2026-30922 pyasn1 is a generic ASN.1 library for Python. Also affects mlflow
- CVE-2026-27205 Flask is a web server gateway interface (WSGI) web application framework. Also affects mlflow