{"description":"Trending threats, MITRE ATT\u0026CK coverage, and detection metadata. Fed continuously.","favicon":"https://feed.craftedsignal.io/favicon-32x32.png","feed_url":"https://feed.craftedsignal.io/products/utcp-http--1.1.3/feed.json","home_page_url":"https://feed.craftedsignal.io/","icon":"https://feed.craftedsignal.io/apple-touch-icon.png","items":[{"_cs_actors":[],"_cs_cpes":[],"_cs_cves":[],"_cs_exploited":false,"_cs_has_poc":false,"_cs_poc_references":[],"_cs_products":["utcp-http (\u003c= 1.1.3)"],"_cs_severities":["high"],"_cs_tags":[],"_cs_type":"advisory","_cs_vendors":[],"content_html":"\u003cp\u003eThe \u003ccode\u003eutcp-http\u003c/code\u003e library (versions \u0026lt;= 1.1.3) contains a critical trust boundary bypass vulnerability that allows for unauthorized credential exfiltration and Server-Side Request Forgery (SSRF). The library automatically extracts OAuth2 configuration, specifically the \u003ccode\u003etokenUrl\u003c/code\u003e field, from remote OpenAPI specifications during the conversion process without performing any security validation. While the library enforces secure URL checks for discovery and tool invocation, these safeguards are omitted when performing OAuth2 token requests. An attacker can craft a malicious OpenAPI specification containing an arbitrary \u003ccode\u003etokenUrl\u003c/code\u003e, which, when registered and triggered by a victim, causes the library to perform a POST request containing the victim's OAuth2 \u003ccode\u003eclient_id\u003c/code\u003e and \u003ccode\u003eclient_secret\u003c/code\u003e to an attacker-controlled endpoint. This vulnerability poses a significant risk to applications that register third-party OpenAPI specifications while utilizing OAuth2 authentication.\u003c/p\u003e\n\u003ch2 id=\"attack-chain\"\u003eAttack Chain\u003c/h2\u003e\n\u003col\u003e\n\u003cli\u003eThe attacker hosts a malicious OpenAPI specification on an accessible server, defining an OAuth2 security scheme with a custom, attacker-controlled \u003ccode\u003etokenUrl\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eThe victim registers the attacker's OpenAPI spec URL within their application using \u003ccode\u003eutcp-http\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003eOpenApiConverter\u003c/code\u003e component fetches and parses the specification, extracting the malicious \u003ccode\u003etokenUrl\u003c/code\u003e into an \u003ccode\u003eOAuth2Auth\u003c/code\u003e object without validation.\u003c/li\u003e\n\u003cli\u003eThe victim invokes an OAuth2-protected tool via the \u003ccode\u003eutcp-http\u003c/code\u003e client.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003eHttpCommunicationProtocol\u003c/code\u003e triggers the \u003ccode\u003e_handle_oauth2\u003c/code\u003e method to retrieve an access token prior to the actual tool request.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003e_handle_oauth2\u003c/code\u003e method performs an \u003ccode\u003easyncio\u003c/code\u003e POST request using the verbatim, unvalidated \u003ccode\u003etokenUrl\u003c/code\u003e extracted from the specification.\u003c/li\u003e\n\u003cli\u003eThe victim's application sends \u003ccode\u003eclient_id\u003c/code\u003e and \u003ccode\u003eclient_secret\u003c/code\u003e credentials to the attacker's server, or performs an SSRF request to internal infrastructure.\u003c/li\u003e\n\u003cli\u003eThe attacker captures the exfiltrated credentials to gain unauthorized access to protected resources on behalf of the victim.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch2 id=\"impact\"\u003eImpact\u003c/h2\u003e\n\u003cp\u003eSuccessful exploitation leads to immediate credential theft of OAuth2 \u003ccode\u003eclient_id\u003c/code\u003e and \u003ccode\u003eclient_secret\u003c/code\u003e pairs, providing attackers with full impersonation capabilities for the victim's identity. Furthermore, the lack of URL validation permits SSRF attacks against internal network resources, such as cloud metadata services (e.g., 169.254.169.254) or private internal APIs that are otherwise inaccessible from the public internet. Organizations that rely on \u003ccode\u003eutcp-http\u003c/code\u003e to integrate third-party or untrusted OpenAPI specifications are at high risk.\u003c/p\u003e\n\u003ch2 id=\"recommendation\"\u003eRecommendation\u003c/h2\u003e\n\u003cp\u003ePrioritized, concrete actions for detection and remediation:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade \u003ccode\u003eutcp-http\u003c/code\u003e to a patched version once available or implement the suggested remediation patch manually.\u003c/li\u003e\n\u003cli\u003eImplement the \u003ccode\u003eensure_secure_url()\u003c/code\u003e check within \u003ccode\u003eopenapi_converter.py\u003c/code\u003e and \u003ccode\u003ehttp_communication_protocol.py\u003c/code\u003e to validate \u003ccode\u003etokenUrl\u003c/code\u003e parameters before use.\u003c/li\u003e\n\u003cli\u003eAudit all registered OpenAPI specifications to ensure \u003ccode\u003etokenUrl\u003c/code\u003e domains align with known, trusted identity providers.\u003c/li\u003e\n\u003cli\u003eMonitor web application logs for outgoing POST requests from the \u003ccode\u003eutcp-http\u003c/code\u003e client to unusual or external IP addresses in the \u003ccode\u003etokenUrl\u003c/code\u003e field.\u003c/li\u003e\n\u003cli\u003eRestrict the network environment of the service using \u003ccode\u003eutcp-http\u003c/code\u003e to prevent egress to unauthorized endpoints, reducing the impact of potential SSRF.\u003c/li\u003e\n\u003c/ul\u003e\n","date_modified":"2026-08-25T16:01:48Z","date_published":"2026-08-25T16:01:48Z","id":"https://feed.craftedsignal.io/briefs/2026-08-utcp-http-auth-bypass/","summary":"The utcp-http library fails to validate the tokenUrl field in OpenAPI specifications, enabling an attacker to redirect OAuth2 credential submissions to arbitrary endpoints or perform SSRF attacks.","title":"Credential Exfiltration and SSRF in utcp-http via OAuth2 tokenUrl","url":"https://feed.craftedsignal.io/briefs/2026-08-utcp-http-auth-bypass/"}],"language":"en","title":"CraftedSignal Threat Feed - Utcp-Http (\u003c= 1.1.3)","version":"https://jsonfeed.org/version/1.1"}