T09 · Insecure Skill Coding Practices
- Location
SKILL.md:15- Finding
Weather Queries Use Unencrypted HTTP Transport
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 15–23; repeated in example instructions at lines 36 and 39
Vulnerability Type: Explicit HTTPS is omitted from external weather-service URLs
Risk Level: LowVulnerable Code
bash # Query Beijing weather curl "wttr.in/Beijing?lang=zh" # Query Shanghai weather in concise format curl "wttr.in/Shanghai?format=3" # Query a three-day forecast for a specified city curl "wttr.in/Guangzhou?lang=zh"The same insecure URL pattern is repeated in the example responses:
text Run `curl "wttr.in/Beijing?lang=zh"` and report the result to the user. Run `curl "wttr.in/Shanghai?lang=zh"` to inspect precipitation information in the forecast.Technical Analysis
The documented URLs omit the
https://scheme. When curl receives a hostname in this form, it normally initiates the request over HTTP. Consequently, the initial request lacks transport encryption and server authentication.Even if
wttr.insubsequently redirects the client to HTTPS, the original HTTP request has already traversed the network in plaintext. An attacker capable of intercepting network traffic could observe the requested city, block or alter a redirect, or return a forged weather response before a secure connection is established.The response is only displayed as weather information; the skill does not instruct the agent to execute it. Therefore, this issue does not constitute remote payload execution, and its expected effect is limited to confidentiality and integrity of weather queries.
Attack Path
- A user asks the agent for weather information.
- The agent follows
SKILL.mdand runs a curl command without an explicit HTTPS scheme. - An attacker on the local network, compromised gateway, or other relevant network path intercepts the plaintext HTTP request.
- The attacker learns the requested city or supplies a forged HTTP response instead of allo ...[truncated 578 chars]
- Remediation
View remediation
Remediation Suggestions
Replace every scheme-less URL with an explicit HTTPS URL, including commands in both the usage and example sections:
bash curl --fail --silent --show-error "https://wttr.in/Beijing?lang=zh" curl --fail --silent --show-error "https://wttr.in/Shanghai?format=3" curl --fail --silent --show-error "https://wttr.in/Guangzhou?lang=zh"Retain curl's default TLS certificate verification and do not introduce options such as
--insecure. If redirects are required, permit them only from an initial HTTPS URL and consider constraining redirects to HTTPS. Handle failed requests as errors rather than presenting incomplete or unauthenticated content as valid weather data.
