{"id":"CVE-2026-101058","revision":"8d0461a3e9d044a08d559e2080554537","records":[{"revision":"8d0461a3e9d044a08d559e2080554537","observedAt":"2026-10-23T15:48:27.903+00:00","statement":{"source":"cve-program","id":"CVE-2026-101058","aliases":[],"title":"python-utcp before 1.1.12 SSRF via Remote HTTP Manual","description":"python-utcp (pip package utcp-http) before 1.1.12 does not verify whether tool URLs declared in a hand-written UTCP manual point at the agent's own loopback interface when that manual is discovered from a remote, non-loopback origin. Because ensure_secure_url intentionally permits loopback HTTP for local development and native manuals bypassed the loopback check performed by the OpenAPI converter, an attacker who can serve a UTCP manual that a victim registers can cause the client to issue requests to services bound only to 127.0.0.1 on the victim host and have the response bodies returned to the caller (server-side request forgery). The http, sse and streamable_http protocols are all affected. Reach is limited to loopback, and exploitation further requires a loopback service that answers unauthenticated requests with useful data. Fixed in utcp-http 1.1.12, which rejects manuals fetched from a non-loopback origin that declare loopback tool URLs, keyed off the final post-redirect discovery URL.","state":0,"publishedAt":"2026-09-27T17:02:39.4+00:00","modifiedAt":"2026-09-30T22:06:29.482+00:00","affected":[{"ecosystem":"Vendor product","name":"python-utcp","ranges":[],"versions":[],"rawVersionEvidence":"{\n                    \"vendor\": \"universal-tool-calling-protocol\",\n                    \"product\": \"python-utcp\",\n                    \"defaultStatus\": \"unaffected\",\n                    \"packageURL\": \"pkg:pypi/utcp-http\",\n                    \"versions\": [\n                        {\n                            \"version\": \"0\",\n                            \"status\": \"affected\",\n                            \"versionType\": \"semver\",\n                            \"lessThan\": \"1.1.12\"\n                        },\n                        {\n                            \"version\": \"1.1.12\",\n                            \"status\": \"unaffected\",\n                            \"versionType\": \"semver\"\n                        }\n                    ]\n                }"}],"metrics":[{"system":"CVSS 4.0","vector":"CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:P/VC:H/VI:L/VA:N/SC:H/SI:L/SA:N","score":7.1,"severity":"HIGH"},{"system":"CVSS 3.1","vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:C/C:H/I:L/A:N","score":6.9,"severity":"MEDIUM"}],"references":["https://github.com/universal-tool-calling-protocol/python-utcp/security/advisories/GHSA-8vxx-v7r9-948g","https://www.vulncheck.com/advisories/python-utcp-before-1.1.12-ssrf-via-remote-http-manual"],"sourceUrl":"https://www.cve.org/CVERecord?id=CVE-2026-101058","license":"CVE Program Terms of Use","key":"cve-program:CVE-2026-101058","identifiers":["CVE-2026-101058"]},"retained":false,"historicalAffected":[]}],"coverage":[]}