Skip to main content

Authlib CVE-2026-28802

HIGH
Improper Verification of Cryptographic Signature (CWE-347)
2026-03-06 security-advisories@github.com GHSA-7wc2-qxgw-g8gg
7.7
CVSS 4.0 · Vendor: github
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Identify service using Authlib JWT verification
  2. Delivery
    Craft JWT with alg:none and empty signature
  3. Exploit
    Submit forged token to endpoint
  4. Execution
    Verification incorrectly passes
  5. Impact
    Impersonate arbitrary identity or escalate privileges

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A04:2025 - Cryptographic Failures
ASVS 5.0
V11 - Cryptography Signature verification
Exploitation Conditions

The target application must use Authlib version 1.6.5 or 1.6.6 to verify inbound JWS/JWTs as a trust boundary, and must invoke the verification in a way that relies on Authlib to reject invalid-algorithm tokens (rather than enforcing its own algorithm allowlist). The specific trigger is a JWT with header 'alg: none' and an empty signature, which the flawed verification accepts. Limiting factors: exploitation only matters where the JWT signature check is actually the security control (e.g., access tokens, ID tokens, or session assertions validated server-side); applications that independently pin an allowed algorithm set, or that are outside the 1.6.5-1.6.6 range, are not exploitable. No authentication is required (PR:N) and no user interaction is needed (UI:N), so any party able to submit a token to the verification endpoint can attempt it.

Impact

Signals are somewhat split. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N) describes network-reachable, low-complexity, unauthenticated exploitation with high integrity impact (VC:N/VI:H/VA:N) - meaning no confidentiality or availability loss but full integrity/authentication compromise, scored 7.7 (High). Against that, EPSS is very low at 0.02% (6th percentile) and the CVE is absent from CISA KEV, indicating no observed mass exploitation. Public exploit/PoC code exists (the advisory's regression test demonstrates the bypass), so the technical barrier is trivial once a target uses an affected version in a verification-dependent flow. The realistic priority is high for any service that uses Authlib to validate inbound JWTs as a trust boundary (it is a direct auth bypass), but the low EPSS reflects that exploitation depends on a victim deploying a narrow vulnerable version range (1.6.5-1.6.6) rather than a widespread internet-facing weakness. Note: the CVSS 4.0 vector marks integrity-only impact; confidentiality and availability are rated N, so this is specifically an identity/forgery risk, not data theft or DoS per the scoring.

Exploit ScenarioDerived

An attacker targeting a service that uses Authlib 1.6.5/1.6.6 to validate incoming JWTs crafts a token with the header 'alg: none', sets arbitrary claims (e.g., an admin subject or elevated scopes), and sends it with an empty signature. Because verification incorrectly passes, the service trusts the forged identity and grants unauthorized access. PoC demonstrating the bypass is public in the security advisory, and the CVSS AC:L/PR:N profile means no special privileges or complex steps are required.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.0% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv5 – Jun 30, 2026

Authentication bypass in Authlib (Python OAuth/OpenID Connect library) versions 1.6.5 through 1.6.6 allows remote attackers to forge JWTs by supplying a token with 'alg: none' and an empty signature, which the library accepts as valid during signature verification. Because the integrity check is silently bypassed, an attacker can craft tokens with arbitrary claims and impersonate any identity. Publicly available exploit code exists (regression-test based, via the GitHub Security Advisory), but EPSS is only 0.02% (6th percentile) and the issue is not in CISA KEV - no public exploit identified as actively used at time of analysis.

Earlier versions of this analysis (4)
v4 Jun 30, 2026 - 05:01 cvss changed CVSS 7.7

JWT signature forgery in the Authlib Python library (versions 1.6.5 and 1.6.6) lets remote attackers bypass signature verification by submitting a token with the 'alg: none' header and an empty signature, which is silently accepted as valid. Any service relying on Authlib to validate JWTs - OAuth/OpenID Connect resource servers, API gateways, session validators - can be tricked into trusting attacker-forged claims such as elevated roles or arbitrary user identities. Publicly available exploit code exists (a working PoC is in the GHSA advisory); EPSS is very low (0.02%) and the issue is not on CISA KEV, so no active exploitation is confirmed.

v3 Jun 30, 2026 - 05:00 cvss changed CVSS 7.7

Signature-verification bypass in the Authlib Python library (versions 1.6.5 and 1.6.6) allows remote attackers to forge JWTs using the 'alg: none' header with an empty signature and have them accepted as valid, enabling authentication bypass and identity/claims spoofing. A regression introduced in commit a61c2acb caused 'none'-algorithm tokens to silently pass verification even when the application expected rejection. Publicly available exploit code exists (GitHub Security Advisory GHSA-7wc2-qxgw-g8gg), though EPSS scores it at just 0.02% and it is not listed in CISA KEV.

v2 Jun 30, 2026 - 05:00 cvss changed CVSS 7.7

Signature verification bypass in Authlib (Python OAuth/OpenID Connect library) versions 1.6.5 up to but not including 1.6.7 allows attackers to submit a forged JWT using 'alg: none' with an empty signature and have it accepted as valid. Because the token passes verification where it should be rejected, an attacker can forge or tamper with token claims to impersonate users or escalate privileges against servers built on the library. Publicly available exploit code exists (GHSA-7wc2-qxgw-g8gg), though the EPSS exploitation probability is negligible at 0.02% and it is not listed in CISA KEV.

v1 Mar 12, 2026 - 22:06 CVSS 9.8

JWT bypass in Authlib Python library.

RemediationAI

Vendor-released patch: upgrade Authlib to version 1.6.7, which fixes the verification logic (commits a61c2acb807496e67f32051b5f1b1d5ccf8f0a75 and b87c32ed07b8ae7f805873e1c9cafd1016761df7). Red Hat users should apply the relevant errata for their product (e.g., RHSA-2026:6309, RHSA-2026:5665, RHSA-2026:4942 and others) via https://access.redhat.com/security/cve/CVE-2026-28802. If immediate upgrade is not possible, the most effective compensating control is to enforce an explicit algorithm allowlist in your JWT/JWS verification configuration so that 'none' is never accepted - for example, require RS256/ES256/HS256 and reject any token whose alg is 'none' or whose signature is empty; the trade-off is minimal but you must ensure every verification call site passes the allowlist, since a missed call site reopens the gap. Reference advisory: https://github.com/authlib/authlib/security/advisories/GHSA-7wc2-qxgw-g8gg.

Affected Packages

pypi authlib fix: 1.6.6+echo.1, 1.6.7

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in pypi

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

Authlib is a widely-used Python library for building OAuth 2.0 and OpenID Connect authorization and resource servers, where JSON Web Tokens (JWT/JWS) are the core credential format. The root cause is CWE-347 (Improper Verification of Cryptographic Signature): the JWS verification path failed to reject the 'none' algorithm with an empty signature, so a token that should fail validation instead passed. The 'alg:none' attack is a classic JWT pitfall where the unsecured-JWS option defined in RFC 7515 is meant to be explicitly opt-in, but a verifier that does not enforce an algorithm allowlist treats an unsigned token as authentic. The affected CPE is cpe:2.3:a:authlib:authlib, confirming the library itself (not a specific downstream product) is the vulnerable component.

Know when Authlib gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (github) PRIMARY 7.7 HIGH
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N/E:P
vuln.today AI 7.5 HIGH

Network-reachable, low-complexity forged token requires no privileges or interaction; impact is integrity/authentication bypass only, with no confidentiality or availability loss.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N
SUSE 9.8 CRITICAL
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Red Hat 9.1 HIGH

Primary rating from Vendor (github).

CVSS VectorVendor: github

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
High
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

9
Analysis Updated
Jun 30, 2026 - 05:03 vuln.today
v5 - CVSS changed
Analysis Updated
Jun 30, 2026 - 05:01 vuln.today
v4 - CVSS changed
Analysis Updated
Jun 30, 2026 - 05:00 vuln.today
v3 - CVSS changed
Analysis Updated
Jun 30, 2026 - 05:00 vuln.today
v2 - CVSS changed
Severity Changed
Jun 30, 2026 - 03:24 NVD
CRITICAL HIGH
CVSS changed
Jun 30, 2026 - 03:24 NVD
9.8 (CRITICAL) 7.7 (HIGH)
PoC Detected
Mar 09, 2026 - 21:20 vuln.today
Public exploit code
Patch released
Mar 09, 2026 - 21:20 nvd
Patch available
CVE Published
Mar 06, 2026 - 07:16 nvd
CRITICAL 9.8

DescriptionCVE.org

Authlib is a Python library which builds OAuth and OpenID Connect servers. From version 1.6.5 to before version 1.6.7, previous tests involving passing a malicious JWT containing alg: none and an empty signature was passing the signature verification step without any changes to the application code when a failure was expected.. This issue has been patched in version 1.6.7.

Executive ViewAI

Why It Matters

Authlib versions 1.6.5-1.6.6 contain a JWT signature verification bypass that allows unauthenticated attackers to forge identity tokens, potentially enabling account takeover across any application using these versions. Immediate patching is critical as the bypass is trivial to exploit despite current low-detection metrics.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.0%
Top 94% exploitable
Prevalence
Medium
popular Python OAuth/OIDC library, common but narrow vulnerable version range
Exploit
POC
Public exploit code exists
Data Quality
6 sources
Confidence: High
NVD CVE.org EPSS Vendor GitHub VulDB

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC Yes
EPSS 0.0%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Out-of-Cycle
Exploitation· derived
Poc
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact
High

Priority Score

58
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +38
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

Affected Products (CPE)CVE.org

cpe:2.3:a:authlib:authlib:*:*:*:*:*:*:*:*
CVE-2025-68158 HIGH POC
8.8 Jan 08

Authlib is a Python library which builds OAuth and OpenID Connect servers. [CVSS 5.7 MEDIUM]

CVE-2025-59420 HIGH POC
7.5 Sep 22

Authlib is a Python library which builds OAuth and OpenID Connect servers. Rated high severity (CVSS 7.5), this vulnerab

CVE-2025-61920 HIGH POC
7.5 Oct 10

Authlib's JOSE/JWS verification path (through 1.6.4, with 1.6.5 as the fix) decodes attacker-supplied JWT/JWS header and

CVE-2024-37568 HIGH POC
7.5 Jun 09

lepture Authlib before 1.3.1 has algorithm confusion with asymmetric public keys. Rated high severity (CVSS 7.5), this v

CVE-2026-119284 MEDIUM POC
6.9 Oct 29

Memory exhaustion in joserfc before 1.7.6 allows remote unauthenticated attackers to force a roughly token-sized extra a

CVE-2025-62706 MEDIUM POC
6.5 Oct 22

Unbounded DEFLATE decompression in Authlib's JWE zip=DEF handling (authlib/jose/rfc7518/jwe_zips.py) lets a small, valid

CVE-2026-96760 CRITICAL
9.8 Sep 28

Signature verification bypass in Authlib 1.7.2 and earlier allows unauthenticated remote attackers to have crafted JWS J

CVE-2026-104056 CRITICAL
9.8 Oct 01

Poisoned OAuth/OIDC discovery metadata in Authlib 1.7.2 and earlier allows an attacker who controls or intercepts the me

CVE-2026-114620 MEDIUM POC
5.4 Oct 22

Server-side request forgery in Authlib's RFC 9101 JWTAuthenticationRequest (JAR) extension lets unauthenticated remote a

CVE-2026-48990 MEDIUM POC
5.3 Jun 17

Resource exhaustion in joserfc (versions 1.3.4-1.6.5) is possible because the RFC7797 unencoded-payload (b64=false) JWS

CVE-2026-114616 CRITICAL
9.1 Oct 22

Token forgery in the Authlib Python library before 1.9.1 lets a remote, unauthenticated attacker mint HS256, HS384 or HS

CVE-2026-114615 CRITICAL
9.1 Oct 22

JWT signature-verification bypass in the Python Authlib library (1.3.1 through 1.8.0) lets a remote attacker who knows o

Vendor StatusVendor

SUSE

Severity: Critical
Product Status
SUSE Linux Enterprise Desktop 15 SP7 Fixed
SUSE Linux Enterprise High Performance Computing 15 SP7 Fixed
SUSE Linux Enterprise Module for Python 3 15 SP7 Fixed
SUSE Linux Enterprise Server 15 SP7 Fixed
SUSE Linux Enterprise Server for SAP Applications 15 SP7 Fixed

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy