T09 · Insecure Skill Coding Practices
- Location
SKILL.md:16- Finding
Weather requests are transmitted over insecure HTTP
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 16, 22, 28, and 38
Vulnerability Type: Plaintext HTTP communication
Risk Level: MediumVulnerable Code
bash curl -s "wttr.in/London?format=3"bash curl -s "wttr.in/London?format=%l:+%c+%t+%h+%w"bash curl -s "wttr.in/London?T"bash curl -s "wttr.in/Berlin.png" -o /tmp/weather.pngTechnical Analysis
The URLs omit an explicit scheme.
curlordinarily interprets such URLs as HTTP, causing the initial request to be sent without transport encryption. A subsequent HTTPS redirect does not protect that initial request.An attacker with a position on the network path could observe requested locations, alter the response, or return a forged HTTP response without permitting the request to reach the legitimate service. Because the downloaded weather data may be processed or presented by an agent, manipulated content can also compromise the integrity of downstream decisions. The commands do not enable
curlfailure handling, so HTTP errors can be mistaken for valid weather responses.Attack Path
- The agent executes one of the documented
curlcommands. curlinitiates a plaintext HTTP request towttr.in.- A network-positioned attacker intercepts the request before any HTTPS redirect.
- The attacker learns the requested location or returns a forged weather response or image.
- The agent accepts, stores, or presents the attacker-controlled response as weather data.
Impact Assessment
Exploitation does not directly grant operating-system privileges. It compromises the confidentiality of queried locations and the integrity of returned weather information. For the image-download example, an attacker can control the bytes written to the designated output file. The scope is limited to requests made through the affected commands and any downstream use of their responses.
- The agent executes one of the documented
- Remediation
View remediation
Remediation Suggestions
Use explicit HTTPS URLs for every request and enable reliable error handling:
bash curl --fail --show-error --silent \ "https://wttr.in/London?format=3"Apply the same change to all other
wttr.inexamples. If redirects are required, use--locationtogether with HTTPS and restrict permitted protocols:bash curl --fail --show-error --silent --location \ --proto '=https' --proto-redir '=https' \ "https://wttr.in/London?T"Treat remote responses as untrusted data, validate expected content types and formats before downstream processing, and avoid presenting error pages as valid weather results.
