Description
Authlib is a Python library which builds OAuth and OpenID Connect servers. Prior to 1.9.0, the default RFC 7523 JWTBearerGrant.get_audiences() returns an empty list, causing JWTBearerGrant.verify_claims() to require only that an aud claim exists without matching the current authorization server. An attacker holding a legitimate assertion for another service can present it to a server that shares the signing key and uses the default grant, obtaining an access token across a trust boundary. Implementations that override get_audiences() with the server's valid audience identifiers are not affected. This issue is fixed in version 1.9.0.
Published: 2026-10-22
Score: 6.8 Medium
EPSS: < 1% Very Low
KEV: No
Impact: Unauthorized token issuance across trust boundary
Action: Patch
AI Analysis

Impact

The vulnerability lies in Authlib’s default JWTBearerGrant implementation, which incorrectly accepts JWT assertions whose audience claims do not match the authorization server. By returning an empty audience list, the verification step only requires the presence of an aud claim, allowing an attacker holding a valid assertion for a different service to acquire a token for the target server. This effectively bypasses authentication and enables cross‑trust‑boundary access.

Affected Systems

Applications using the Authlib library, specifically the authlib:authlib product in versions prior to 1.9.0, are affected if they rely on the default JWTBearerGrant without overriding the get_audiences method.

Risk and Exploitability

The CVSS score of 6.8 reflects a moderate severity authentication bypass. EPSS is not publicly available, and the vulnerability is not listed in CISA KEV. An attacker who possesses a valid JWT assertion for another service that shares the same signing key can exploit this flaw by sending the assertion to the vulnerable server and receiving a usable access token. The attack requires only the assertion and the ability to reach the server, making it relatively straightforward in environments with shared keys.

Generated by OpenCVE AI on October 23, 2026 at 13:26 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade Authlib to version 1.9.0 or later.
  • If upgrade is not possible, override JWTBearerGrant.get_audiences() to return the legitimate audience identifiers for the server.
  • Separate signing keys so that each service has a unique key, preventing cross‑service token acceptance.

Generated by OpenCVE AI on October 23, 2026 at 13:26 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-fch4-3c6x-j4gc Authlib: Default JWT bearer grant accepts assertions for the wrong audience
History

Thu, 29 Oct 2026 15:00:00 +0000

Type Values Removed Values Added
CPEs cpe:2.3:a:authlib:authlib:*:*:*:*:*:*:*:*

Thu, 29 Oct 2026 13:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'poc', 'Technical Impact': 'total'}, 'version': '2.0.3'}


Fri, 23 Oct 2026 12:30:00 +0000

Type Values Removed Values Added
Weaknesses CWE-358
References
Metrics threat_severity

None

threat_severity

Moderate


Fri, 23 Oct 2026 06:15:00 +0000

Type Values Removed Values Added
First Time appeared Authlib
Authlib authlib
Vendors & Products Authlib
Authlib authlib

Fri, 23 Oct 2026 00:45:00 +0000

Type Values Removed Values Added
Description Authlib is a Python library which builds OAuth and OpenID Connect servers. Prior to 1.9.0, the default RFC 7523 JWTBearerGrant.get_audiences() returns an empty list, causing JWTBearerGrant.verify_claims() to require only that an aud claim exists without matching the current authorization server. An attacker holding a legitimate assertion for another service can present it to a server that shares the signing key and uses the default grant, obtaining an access token across a trust boundary. Implementations that override get_audiences() with the server's valid audience identifiers are not affected. This issue is fixed in version 1.9.0.
Title Authlib: Default JWT bearer grant accepts assertions for the wrong audience
Weaknesses CWE-1188
CWE-287
References
Metrics cvssV3_1

{'score': 6.8, 'vector': 'CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:N'}


cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-10-29T12:29:17.976Z

Reserved: 2026-10-21T20:34:25.600Z

Link: CVE-2026-114618

cve-icon Vulnrichment

Updated: 2026-10-29T12:29:08.000Z

cve-icon NVD

Status : Analyzed

Published: 2026-10-22T22:18:04.747

Modified: 2026-10-29T14:53:01.947

Link: CVE-2026-114618

cve-icon Redhat

Severity : Moderate

Publid Date: 2026-10-22T21:28:37Z

Links: CVE-2026-114618 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-10-23T13:30:07Z

Weaknesses
  • CWE-1188

    Initialization of a Resource with an Insecure Default

  • CWE-287

    Improper Authentication

  • CWE-358

    Improperly Implemented Security Check for Standard