CVE-2026-114620
Medium · 5.4CVSS
5.4
EPSS
0.4%
Published
Oct 22, 2026
CISA due date
—
Cloudanix analysis
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
- Identify a public OAuth client identifier accepted by the target authorization server
- Craft an authorization request containing a request_uri pointing to an internal, link-local, or attacker-controlled destination
- Submit the request to the JWTAuthenticationRequest endpoint
- Observe server responses and timing to infer fetch success or failure
- 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
- CVE-2026-63184 Refitter is a tool for generating a C# REST API client using the Refit library. CWE-918
- CVE-2026-119343 Stirling-PDF is a locally hosted web application that facilitates various operations on… CWE-918
- CVE-2026-119342 Stirling-PDF is a locally hosted web application that facilitates various operations on… CWE-918
- CVE-2026-62284 OSAC operator is a Kubernetes operator. CWE-918
- CVE-2026-55598 PinePods is a complete, self-hosted podcast management system written in Rust. CWE-918
- CVE-2026-116252 pgAdmin 4's materialized view refresh passed the target database's name to psql's… CWE-918
- CVE-2026-61840 Quest Bot is an opensource Discord Bot. CWE-918
- CVE-2026-119712 PipesHub before 0.10.0 contains a server-side request forgery vulnerability in… CWE-918