/

CVE-2026-101059

Severity:

HIGH RISK

(7.1)

SSRF (CWE-918) in utcp-http OAuth2 Token Handling Flow

CVE-2026-101059

Deferred

Vulnerability type

Category:

Server-Side Request Forgery

CWE:

CWE-918

Impact:

Credential Disclosure and Unauthorized Server-Side Requests

Severity:

HIGH RISK

(7.1)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

A server-side request forgery vulnerability in utcp-http allows a remote OpenAPI specification to control the OAuth2 token endpoint used by the library. When a victim registers an attacker-controlled specification and invokes the resulting protected tool, the victim's OAuth2 client credentials may be submitted to an attacker-selected endpoint.

Affected context

The vulnerability occurs in utcp-http deployments that consume remote or otherwise untrusted OpenAPI specifications and generate OAuth2-protected tools from them. It becomes risky when the library accepts an attacker-controlled tokenUrl value without validating its destination before submitting client credentials.

Exploit preconditions

  • Attack surface: OpenAPI specification registration and generated OAuth2 tool invocation
  • Required access: Ability to provide or cause a victim to register an attacker-controlled OpenAPI specification
  • Trigger point: OAuth2 token acquisition for an invoked generated tool
  • Why exploitation is possible: The remote specification can supply an arbitrary token endpoint, and the library submits OAuth2 client credentials without sufficient URL validation

Why this happens

The underlying bug is an insufficiently constrained outbound request destination derived from untrusted metadata.

OAuth2 tokenUrl values in remote OpenAPI specifications are treated as trusted configuration even though they can direct credential-bearing requests to attacker-controlled infrastructure.

This maps to CWE-918: Server-Side Request Forgery, because attacker-influenced input controls a server-side HTTP request and its destination. The request also creates a credential-exfiltration risk because sensitive OAuth2 fields are included in the outbound submission.

Potential impact

  • OAuth2 client identifiers and client secrets may be disclosed
  • Attackers could receive or misuse credentials submitted to their endpoint
  • The application may make unintended outbound requests
  • Internal services or restricted network locations could be probed, depending on network access
  • Downstream APIs and data may be accessed using compromised credentials

General mitigation guidance

Mitigation generally focuses on treating OpenAPI security metadata as untrusted input and separating specification data from credential-handling policy.

Common defensive patterns include:

  • Allowing token requests only to explicitly approved HTTPS origins
  • Rejecting loopback, link-local, private, link-local, and otherwise restricted network destinations unless specifically required
  • Validating and normalizing URLs before any credential-bearing request is created
  • Avoiding transmission of client secrets to destinations that are not governed by an explicit trust policy
  • Applying outbound network controls and egress allowlists
  • Using least-privilege OAuth2 credentials with narrowly scoped permissions
  • Requiring user or administrator approval before registering untrusted specifications

These controls reduce both SSRF exposure and the consequences of credential disclosure.

How teams detect issues like this

Detection approaches can include:

  • Static analysis for HTTP request destinations derived directly from OpenAPI fields or other remote metadata
  • Code review checks for missing URL scheme, hostname, port, and network-range validation
  • Tests using attacker-controlled token endpoints, redirects, private addresses, and alternate URL representations
  • Runtime monitoring for OAuth2 token requests to unapproved domains or unusual network ranges
  • Egress policy enforcement that blocks unauthorized outbound destinations
  • Automated security review tools that identify SSRF data flows and credential-bearing requests

Sources

SourceLink
github.comgithub.com/universal-tool-calling-protocol/python-utcp/security/advisories/GHSA-8cp3-qxj6-px34
vulncheck.comvulncheck.com/advisories/utcp-http-before-1.1.4-oauth2-tokenurl-trust-boundary-bypass

Frequently asked

questions

It can be triggered through a remotely supplied or attacker-controlled OpenAPI specification when a victim registers that specification and invokes a generated OAuth2-protected tool. The attacker generally does not need direct access to the victim's host.

The attacker needs a way to influence the OpenAPI specification consumed by the victim, such as through a registration workflow that accepts untrusted specifications. The victim's application must also possess OAuth2 client credentials and attempt token acquisition.

Validate and constrain tokenUrl values against an explicit trusted-origin policy before sending any credentials. Combine application-level validation with network egress controls and avoid trusting remote specification metadata by default.

Treat all externally supplied URLs as untrusted, test URL validation against private and deceptive destinations, monitor outbound credential-bearing requests, and use least-privilege OAuth2 credentials with narrowly defined scopes.

Find out what's already
exploitable in your codebase.