T09 · Insecure Skill Coding Practices
- Location
scripts/fetch.py:13- Finding
HTTPS Certificate and Hostname Verification Disabled Globally
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is a real webpage-fetching helper, but it sends requested URLs to third-party services and fetches arbitrary URLs with weakened HTTPS checks, so it needs Review before installation.
Install only if you intend to use it for public webpages and are comfortable sending target URLs to the named third-party cleaning services. Do not use it for private intranet pages, signed links, URLs containing tokens, or sensitive documents unless the code is changed to validate destinations, preserve HTTPS verification, and require explicit consent for third-party forwarding.
scripts/fetch.py:13HTTPS Certificate and Hostname Verification Disabled Globally
scripts/fetch.py:61Unrestricted URL Fetching Permits Server-Side Requests to Internal Services
scripts/fetch.py:34Sensitive URL Data Is Forwarded to Multiple Third-Party Services
The skill clearly directs the agent to invoke a Python script that performs outbound web requests, but the manifest declares no explicit tool scope or permissions. This weakens governance and reviewability because consumers cannot tell from the skill declaration that network access and third-party transmission are required, increasing the chance of unintended data egress or unsafe deployment.
The skill routes requested URLs through third-party cleaning services such as r.jina.ai, markdown.new, and defuddle.md, but the description does not warn users that requested pages and possibly sensitive query strings will be sent to external services. This creates a real privacy and confidentiality risk, especially if the agent is asked to fetch private, signed, internal, or user-specific links.
The manifest description is written to present the skill in Chinese and specifically highlights Chinese support, but there is no indication that language or locale is user-selectable or region-specific by design. Under the policy, forcing or assuming a specific language without opt-in can be a locale-policy violation.
The tool forwards user-supplied URLs to external services (r.jina.ai, markdown.new, defuddle.md) before attempting a direct fetch, which exposes the user's target URL and potentially sensitive query parameters to third parties without explicit disclosure or consent. In an agent context, users may provide private intranet links, presigned URLs, or token-bearing URLs, so this behavior can leak sensitive metadata or access tokens outside the intended trust boundary.
The script explicitly disables both TLS certificate validation and hostname verification for outbound HTTPS probes. This makes the service-availability checks vulnerable to man-in-the-middle interception or spoofing, allowing an attacker on the network path to influence which fallback URL is selected or to conceal failures of the real service.
The code sends the user-supplied target URL to external services such as r.jina.ai, markdown.new, and defuddle.md during probing and final transformation, without any warning or consent mechanism. This can leak sensitive internal, private, or token-bearing URLs to third parties, which is especially risky in an agent skill intended to fetch arbitrary user-requested web content.
The natural-language description and inline documentation are exclusively in Chinese, with no indication that users can choose another language. Under the stated policy, forcing a specific language without opt-in is a natural-language policy concern.
The file is described as a URL preprocessor, but it also performs live outbound network checks to third-party services. That mismatch matters because operators and upstream agents may treat it as a pure transformation utility and unknowingly grant or invoke network-capable behavior, reducing transparency and informed consent.
The file's human-readable docstrings and comments are written in Chinese only, including the skill description and operational notes, without offering an alternate language or indicating that Chinese is required for a region-specific reason. This can violate language/locale policy where user-facing skill content should not force a specific language without opt-in.
No suspicious patterns detected.