T09 · Insecure Skill Coding Practices
- Location
SKILL.md:64- Finding
Unrestricted Profile URL Fetching Enables Server-Side Request Forgery
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 64–101
Vulnerability Type: Server-Side Request Forgery through unrestricted user-supplied URLs
Risk Level: HighVulnerable Code
markdown If the user provides a URL, jump straight to **Step 2**. If they only give a name or handle, start at **Step 1**.markdown ## Step 2 — Fetch the Profile Page ### 2a. Try plain web_fetch firstweb_fetch(url)
text Technical Analysis
The Skill directs the Agent to pass a user-provided URL directly to
web_fetchwithout first validating its scheme, hostname, resolved IP address, port, or redirect destination. Although the declared functionality only requires access to supported public creator platforms, the instructions do not enforce the documented platform-domain list.An attacker could supply a URL pointing to localhost, a private network address, a link-local address, a cloud metadata endpoint, or another internal service. DNS rebinding and redirects could also bypass a hostname-only check if the destination is not revalidated after DNS resolution and on each redirect.
Exploitability depends on the network isolation and filtering implemented by the host's
web_fetchor browser tools. The Skill itself provides no defensive control.Attack Path
- An attacker asks the Agent to scrape a purported creator-profile URL.
- The supplied URL instead targets an internal resource, such as a loopback address, private network service, or link-local metadata endpoint.
- Following the Skill instructions, the Agent jumps directly to Step 2.
- The Agent invokes
web_fetch(url)without platform or destination validation. - If the host tool permits the request, it accesses the internal resource.
- The response may be exposed in the conversation or processed as profile data.
- The attacker can repeat the process to enumerate internal hosts, ports, endpoints, or sensitive metada ...[truncated 710 chars]
- Remediation
View remediation
Remediation Suggestions
- Accept only
httpsURLs. - Enforce an explicit allowlist of supported creator-platform domains and required subdomains.
- Reject URLs containing embedded credentials, unexpected ports, malformed hostnames, or non-HTTP schemes.
- Resolve the hostname before each request and reject loopback, private, link-local, multicast, reserved, and unspecified IP ranges for both IPv4 and IPv6.
- Revalidate the destination after every redirect and limit the number of redirects.
- Protect against DNS rebinding by ensuring the actual connection address matches a validated public address.
- If the URL is outside the supported allowlist, require explicit user confirmation and route it through a sandboxed fetcher with strict egress controls.
- Do not return raw responses from blocked or unexpected destinations.
- Accept only
