Cloudanix VulnDB

CVE-2026-114620

Medium · 5.4

CVSS

5.4

EPSS

0.4%

Published

Oct 22, 2026

CISA due date

—

Cloudanix analysis

Next patch cycle SSVC: Track

A flaw in an authentication library could let attackers make a server fetch internal web addresses instead of only approved ones, risking exposure of private network information.

Exploitation
Remote Unauthenticated
Attacker needs
None
Complexity
Moderate
Impact
Data Exposure
Component
Library
Class
SSRF
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

Unauthenticated request_uri parameter is forwarded to a user-implemented get_request_object() hook before any destination or registration policy is applied, enabling SSRF when the hook performs an unrestricted outbound fetch.

Why it matters to the business

Attackers may reach internal or restricted network resources through the authorization server, potentially exposing sensitive data or internal services with limited but non-zero risk of information leakage or service probing.

How an attack unfolds

An attacker supplies a public client_id and a malicious request_uri to the authorization endpoint; the server passes the URI to the integrator's hook, which fetches the attacker-chosen destination before policy checks occur, allowing the attacker to observe outcomes via error messages and timing.

How to fix it

Upgrade Authlib to version 1.9.0 or later. Ensure any custom get_request_object() implementation enforces an allowlist of permitted destinations, applies registration policy checks, and limits retrieval size and time before performing network requests.

How to confirm the fix worked

Confirm the installed Authlib version is 1.9.0 or newer; review custom hook code for destination allowlisting and policy enforcement; test with known internal URLs to verify they are rejected before fetch.

Typical attack path

  1. Identify a public OAuth client identifier accepted by the target authorization server
  2. Craft an authorization request containing a request_uri pointing to an internal, link-local, or attacker-controlled destination
  3. Submit the request to the JWTAuthenticationRequest endpoint
  4. Observe server responses and timing to infer fetch success or failure
  5. Iterate on destinations to map or access internal resources

How to detect it

Review authorization server access logs for request_uri parameters containing internal IP addresses, localhost, or unexpected domains; correlate with timing anomalies or error patterns indicating fetch attempts; examine hook implementation logs if present.

What your security team should do

  • Upgrade Authlib to 1.9.0 immediately in all OAuth/OpenID Connect deployments
  • Audit and harden any integrator-supplied get_request_object() implementations with strict allowlists and timeouts
  • Monitor authorization server logs for unusual request_uri values or internal network access attempts
  • Consider rate-limiting and additional request validation on public client authorization flows

The record

Authlib is a Python library which builds OAuth and OpenID Connect servers. Prior to 1.9.0, Authlib's RFC 9101 JWTAuthenticationRequest passes the unauthenticated, client-controlled request_uri parameter to the abstract get_request_object() hook before applying a destination or registration policy; the hook itself performs no network request, while the documentation demonstrates an unrestricted HTTP fetch. In deployments whose integrator implements that hook as an unrestricted outbound fetch, a remote attacker who knows a valid public client identifier can make the authorization server request internal, link-local, or otherwise unintended URLs and can distinguish fetch outcomes through different error responses and timing. Deployments whose custom hook already applies a secure allowlist, destination controls, and retrieval limits are not affected. The JWTAuthenticationRequest implementation in authlib/oauth2/rfc9101/authorization_server.py forwards request_uri to get_request_object() before an application-approved retrieval policy accepts the destination. This issue is fixed in version 1.9.0.

Affected packages

Ecosystem Package Introduced Fixed

Related vulnerabilities