CVE-2026-114618: Authlib JWT Bearer Grant audience validation bypass

CVE-2026-114618 · Severity: medium · CVSS 6.8 · Published 2026-10-22

Authlib is a Python library that implements OAuth and OpenID Connect servers. Prior to version 1.9.0, the default JWT Bearer Grant implementation fails to validate the audience claim, allowing an attacker with a valid JWT token issued for another service to obtain an access token if the services share the same signing key. This enables unauthorized cross-service access.

Technologies: Authlib, authlib (PyPI). Vendors: Authlib, PyPI.

Quick answers

Is CVE-2026-114618 exploited in the wild?
No. Junglewise Threat Intelligence has no report of CVE-2026-114618 being exploited in the wild.
How severe is CVE-2026-114618?
Medium severity, with a CVSS score of 6.8, published 22 October 2026.
Which products and versions are affected?
Authlib prior to 1.9.0; authlib (PyPI) < 1.9.0, ECOSYSTEM:introduced=0,fixed=1.9.0.
Is there a fix for CVE-2026-114618?
Yes. authlib (PyPI): upgrade to 1.9.0 or later. Until then: Implementations can override the get_audiences() method with the server's valid audience identifiers to avoid this vulnerability until upgrading. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
How is CVE-2026-114618 attacked?
It is attacked over the network, in a software library.
Am I affected by CVE-2026-114618?
Check whether you run Authlib or authlib (PyPI) at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

How to fix

  • authlib (PyPI): upgrade to 1.9.0 or later
    pip install "authlib>=1.9.0"

Implementations can override the get_audiences() method with the server's valid audience identifiers to avoid this vulnerability until upgrading.

Technical details

The JWTBearerGrant.get_audiences() method returns an empty list by default, causing JWTBearerGrant.verify_claims() to accept any JWT with an aud claim present without matching it against the authorization server's valid audience identifiers. An attacker can exploit this by presenting a legitimate assertion intended for another service to obtain an access token, bypassing the audience validation. The fix in version 1.9.0 enforces that get_audiences() must return a non-empty list of valid audience identifiers.

Affected products

  • Authlib Authlib prior to 1.9.0

Identifiers

  • CVE-2026-114618
  • GHSA-fch4-3c6x-j4gc
  • PYSEC-2026-4358

Timeline

  • 2026-10-22: disclosed
  • 2026-10-08: patched

References

This page as Markdown. Free to reuse under CC BY 4.0 with a link back.