T09 · Insecure Skill Coding Practices
- Location
SKILL.md:42- Finding
Weather Requests Use Unencrypted HTTP
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:42-48,SKILL.md:55-62,SKILL.md:69-76,SKILL.md:91,SKILL.md:97,SKILL.md:103, andSKILL.md:112
Vulnerability Type: Plaintext HTTP communication
Risk Level: MediumThe affected command examples omit the URL scheme:
bash curl "wttr.in/London?format=3" curl "wttr.in/London?0" curl "wttr.in/New+York?format=3" curl "wttr.in/London" curl "wttr.in/London?format=v2" curl "wttr.in/London?1" curl "wttr.in/London?format=%l:+%c+%t+%w" curl "wttr.in/London?format=j1" curl "wttr.in/London.png" curl -s "wttr.in/London?format=%l:+%c+%t+(feels+like+%f),+%w+wind,+%h+humidity" curl -s "wttr.in/London?format=%l:+%c+%p" curl "wttr.in/London?format=v2" curl wttr.in/ORDTechnical Analysis
When
curlreceives a URL without an explicit scheme, it normally interprets the destination as HTTP. Consequently, the initial weather request and its location parameters can be transmitted without transport encryption or server authentication.An attacker with a network position, such as an operator of a hostile wireless access point or a compromised intermediary, can observe the requested location and intercept or modify the HTTP response. Even if the service normally redirects clients to HTTPS, the initial plaintext response can itself be manipulated when redirect enforcement and validation are not guaranteed by the command. The examples also do not use
--failto ensure HTTP errors are handled as failures.The declared homepage uses HTTPS, demonstrating that an encrypted endpoint is available, but the command examples do not explicitly require it.
Attack Path
- A user requests weather information for a city, region, or airport.
- The Agent follows the Skill instructions and executes a scheme-less
curlcommand. curlinitiates an unencrypted HTTP request containing the requested location.- A network-positioned attacker intercepts ...[truncated 610 chars]
- Remediation
View remediation
Remediation Suggestions
Replace every scheme-less endpoint with an explicit HTTPS URL. Add error-handling options so failed or unexpected HTTP responses are not silently treated as valid weather data:
bash curl --fail --silent --show-error "https://wttr.in/London?format=3"Apply the following hardening measures consistently:
- Require
https://wttr.in/in every command example. - Use
--fail --silent --show-errorso transport and HTTP errors are surfaced. - If redirects are required, use
--locationtogether with--proto '=https'and--proto-redir '=https'to prevent downgrade redirects. - URL-encode user-provided locations rather than directly inserting raw input into a shell command.
- Avoid disabling TLS certificate verification through options such as
--insecure.
- Require
