CVE-2026-81093
—SSRF in get-html-skeleton MCP tool leaks host-local data and metadata credentials
CVE-2026-81093 is a server-side request forgery (CWE-918) in the get-html-skeleton tool of the affected MCP server: the handler in src/tools/common/get_html_skeleton.ts validated the caller-supplied url argument only syntactically via isValidHttpUrl (src/utils/generic.ts), checking only that the string starts with http/https and parses as a URL, without inspecting the hostname or the address it resolves to. Because loopback, link-local and private-range addresses — including the cloud provider's instance metadata address — passed validation, any caller able to invoke the MCP server could make the web-browser actor fetch an endpoint reachable only from the host, with the fetched document returned in the tool response and therefore readable by the caller. An attacker could thereby read host-local resources and, on cloud-hosted deployments, retrieve instance metadata credentials such as instance tokens; the flaw is rated 8.7 (high) under CVSS 4.0 (network vector, no privileges, high confidentiality impact). All deployments running versions that ship the tool are affected; version 0.9.12 removes the tool entirely. No public proof-of-concept, CISA KEV listing, or confirmed in-the-wild exploitation is known, and EPSS puts the 30-day exploitation probability at 0.5% (40th percentile).
What to do: Upgrade the MCP server to version 0.9.12, which removes the vulnerable get-html-skeleton tool, or disable/remove that tool on earlier versions. Restrict which clients can invoke the server, and review host logs for fetches to 169.254.169.254, localhost, or private-range addresses that could indicate metadata credential theft on cloud deployments.
| MCP server exposing the get-html-skeleton tool (handler: src/tools/common/get_html_skeleton.ts) | All versions shipping the get-html-skeleton tool prior to 0.9.12 (version 0.9.12 removes the tool; no in-place fix) |
Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.
The get-html-skeleton tool fetched a URL the caller supplied after checking only its syntax. The handler in src/tools/common/get_html_skeleton.ts validated the url argument with isValidHttpUrl from src/utils/generic.ts, which confirmed the string began with an http or https scheme and parsed as a URL and inspected neither the host name nor the address it resolves to. Loopback, link-local and private ranges therefore passed, including the address cloud providers use to serve instance metadata. The unchecked URL was handed to the web-browser actor and the fetched document was returned in the tool response, so any caller of the MCP server could make it request an endpoint reachable only from the host and read the result, including instance credentials. Version 0.9.12 removes the tool.
- Weakness
- CWE-918
- Vector
- CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
In the news0 stories
No ingested article mentions this CVE yet.