T09 · Insecure Skill Coding Practices
- Location
scripts/fetch_url.py:12- Finding
Unvalidated URLs and URL-Embedded Secrets Are Disclosed to Third-Party Fetch Services
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This web-fetching skill is useful and coherent, but it forwards arbitrary URLs to multiple third-party services without clear sensitive-URL safeguards or consent guidance.
Install only if you intend to use it for public web pages. Avoid using it with private links, signed download URLs, password reset links, internal hostnames, or URLs containing tokens or credentials, because those full URLs may be sent to third-party readability services. Treat fetched page text as untrusted content and do not let it authorize tool use or disclose secrets.
scripts/fetch_url.py:12Unvalidated URLs and URL-Embedded Secrets Are Disclosed to Third-Party Fetch Services
scripts/fetch_url.py:39Untrusted Web Content Is Returned for Agent Use Without Prompt-Injection Boundaries
The script sends user-supplied URLs to third-party proxy/readability services (r.jina.ai, markdown.new, defuddle.md) without any validation or disclosure. This can leak sensitive URLs, query parameters, private document locations, signed links, or internal endpoints to external services, and the skill context makes this more dangerous because the tool is specifically designed to fetch arbitrary URLs and automatically prefers these third parties first.
The skill directs the agent to perform network access through multiple external fetch services and a bundled script, but it does not declare any explicit tool scope such as allowed tools or permissions. This creates a governance gap: an agent may invoke broader network-capable tooling than intended, making external requests to arbitrary URLs without clear restriction or operator visibility.
This code performs HTTP requests to user-supplied and third-party transformed URLs, then later emits the fetched content in JSON output. There is no confirmation prompt, warning print, docstring, or comment disclosing that external requests will be made and remote page content will be returned verbatim.
No suspicious patterns detected.