T09 · Insecure Skill Coding Practices
- Location
SKILL.md:276- Finding
Configurable API Host Can Exfiltrate QWeather Credentials
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This is a weather-query skill with expected external API use, but users should understand that city queries and any configured weather API keys are sent to third-party weather services.
Install only in an environment where external weather lookups are acceptable. Treat city names as shared with wttr.in or the configured weather provider, use a trusted QWeather host issued by the provider, keep API keys low-privilege, and prefer installing dependencies in an isolated environment with pinned versions if possible.
SKILL.md:276Configurable API Host Can Exfiltrate QWeather Credentials
SKILL.md:103Unpinned Runtime Installation of a Third-Party Dependency
Suspicious Unicode normalization or mixed-script content
The manifest claims the skill supports life index data along with current weather, forecast, and air quality, but the runnable code only implements WttrAPI and QWeatherAPI classes and never fetches any life-index endpoint. Although the formatter can display an 'indices' field if present, no code populates it, and the advertised Seniverse/OpenWeatherMap fallback providers are referenced but not implemented.
Overly broad trigger phrases increase the chance the skill activates unintentionally during ordinary conversation, causing unsolicited network requests to external APIs. In an agent environment, accidental invocation can leak user intent or contextual location information and create confusing or surprising behavior.
The skill describes third-party API usage but does not clearly warn that user-provided city inputs are sent off-platform to external weather providers. This lack of transparent disclosure can lead to privacy violations, especially when users assume queries are processed locally or only by the host assistant.
Skill's behavior or capabilities extend beyond its stated purpose. Scope creep allows an agent to perform actions unrelated to its documented functionality, increasing the attack surface.
permit persons to whom the Software is furnished to do so.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
The example usage hard-codes lang='zh', which imposes a specific language choice in the documented behavior even though the skill advertises both Chinese and English support. There is no accompanying instruction to ask the user for language preference before selecting Chinese output.
The skill transmits user-supplied city queries to external third-party weather services, but the security note understates the privacy implication by framing this as essentially no external upload beyond API calls. Users may not realize their location interests or query patterns are disclosed to outside services, which matters in privacy-sensitive environments.
No suspicious patterns detected.