Back to skill

Security audit

Xiao Chuang You Weather

Security checks for vulnerabilities and agentic risk

Overview

The weather skill is mostly coherent, but it can infer a user's location from memory and send it to a third-party weather service without a clear confirmation step.

Review this skill before installing if you are not comfortable with an agent using prior conversation or MEMORY.md to infer your location. A safer version would ask you to confirm a city before making the wttr.in request and would narrow the trigger words to clearly weather-related phrases.

Vulnerability Patterns
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T05 · Unauthorized Access and Privilege Escalation

Warning
Location
SKILL.md:27
Finding
Unconsented Persistent-Memory Access and Location Disclosure## Vulnerability Details **File Location**: `SKILL.md`, lines 27-30 **Vulnerability Type**: `T05: Unauthorized Access and Privilege Escalation` **Risk Level**: Medium ```markdown - If no location is mentioned at all → infer the user's location from conversation history or MEMORY.md ### Step 2: Retrieve Weather Data - Use `wttr.in` to query real-time weather: `https://wttr.in/{city}?format=j1` ``` The excerpt above is an English translation of the relevant instructions. ### Technical Analysis The Skill instructs the Agent to inspect conversation history or persistent `MEMORY.md` data when the user has not supplied a location. This violates least-privilege principles because persistent memory may contain personal information unrelated to the immediate weather request. The required functionality can instead be completed by asking the user to provide or confirm a city. After inferring a city, the Skill directs the Agent to place it in a request to the third-party `wttr.in` service. This creates an external disclosure path for location information obtained from persistent state without an explicit confirmation or consent step. The issue does not grant arbitrary filesystem access, code execution, or elevated operating-system privileges. Its scope is limited to unauthorized use of memory available to the Agent and disclosure of an inferred location to an external weather provider. ### Attack Path 1. A user asks an ambiguous question such as “What is the weather here?” without specifying a location. 2. The Skill directs the Agent to inspect conversation history or `MEMORY.md`. 3. The Agent finds location-related personal information stored during a previous interaction. 4. The Agent infers a city without asking the user to confirm it. 5. The city is inserted into `https://wttr.in/{city}?format=j1`. 6. The external service receives the inferred location as part of the HTTP request. No attacker-controlled code execution is required. Exploitation occurs through r ...[truncated 752 chars]
Remediation
## Remediation Suggestions 1. Remove the instruction to infer location from `MEMORY.md` by default. 2. When no location is supplied, ask the user to provide or confirm a city before making an external request. 3. Permit persistent-memory lookup only after explicit, informed opt-in and only when the stored location was collected for this purpose. 4. Inform the user that the confirmed city will be sent to `wttr.in` to retrieve weather data. 5. Minimize transmitted location precision. Use a city or broad region rather than a street address, neighborhood, or exact coordinates. 6. Validate and URL-encode the confirmed city before constructing the request. 7. Provide a privacy-preserving fallback, such as instructions for consulting an official local weather source, when the user declines external disclosure. 8. Document the external service, the data transmitted, and any applicable retention or privacy considerations.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (3)

Vague Triggers

Medium
Confidence
95% confidence
Finding
The trigger list includes very generic terms such as “热”, “冷”, “空气”, and “质量”, which can cause the weather skill to activate on unrelated conversations. Over-broad activation can lead to unintended handling of user requests and, in this skill, may also cascade into location inference and third-party weather queries without clear user intent.

Missing User Warnings

Medium
Confidence
96% confidence
Finding
The skill explicitly states it will infer the user's location from conversation history or MEMORY.md and query an external service (wttr.in), but it does not require disclosure or consent. This creates a privacy risk because sensitive location data may be derived and transmitted to a third party when the user did not clearly authorize that behavior.

Natural-Language Policy Violations

Low
Confidence
82% confidence
Finding
The instructions prescribe a specific Chinese linguistic style and phrasing, including examples of required wording, but do not indicate that the user can choose another language or locale. This can violate language-choice policy when the skill is used in broader multilingual contexts.

Static analysis

No suspicious patterns detected.