Back to skill

Security audit

Weather Open‑Meteo

Security checks for vulnerabilities and agentic risk

Overview

This is a simple weather lookup skill whose external API use fits its purpose, though users should avoid the plaintext wttr.in fallback examples.

This skill is appropriate for weather lookups, but installing users should understand that searched locations are sent to external weather services. Prefer the HTTPS Open-Meteo examples and change the wttr.in fallback URLs to explicit https:// before use, especially for private or sensitive locations.

Vulnerability Patterns
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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)

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:74
Finding

Plaintext HTTP Used for Weather Fallback Requests

Content
View full analysis

Vulnerability Details

File Location: SKILL.md:74-86
Vulnerability Type: Unencrypted network communication
Risk Level: Medium

The wttr.in fallback examples omit the HTTPS scheme or explicitly specify HTTP:

bash
curl -s "wttr.in/São+Paulo?format=3"

Compact plain-text:

bash
curl -s "wttr.in/São+Paulo?format=1"

PNG image (for terminals or embeds):

bash
curl -s -o sp.png "http://wttr.in/São+Paulo?format=1"

Technical Analysis

A URL without an explicit scheme is interpreted by curl as an HTTP request in this context, while the PNG example explicitly uses http://. Consequently, these fallback requests lack transport encryption and server authentication.

An attacker capable of observing or modifying network traffic can read the requested location and tamper with the weather response. The use of curl -s also suppresses diagnostic output, making transport failures and unexpected server behavior less visible.

Attack Path

  1. A user requests weather information for a location.
  2. The primary Open-Meteo operation fails or the agent otherwise invokes the documented wttr.in fallback.
  3. The agent sends the location to wttr.in using plaintext HTTP.
  4. An attacker controlling or monitoring the network path intercepts the request.
  5. The attacker reads the queried location or alters the returned weather text or PNG data.
  6. The manipulated response is displayed to the user or saved as sp.png.

Impact Assessment

The vulnerability can expose queried location data and compromise the integrity of weather information or downloaded image content. An attacker could provide misleading weather data or arbitrary file content under the sp.png name.

No direct privilege escalation or code-execution path is established because the downloaded file is only saved and is not executed by the documented commands. The demonstrated impact is limited to network confiden ...[truncated 106 chars]

Remediation
View remediation

Remediation Suggestions

  • Use explicit HTTPS URLs for every wttr.in request:

    bash
    curl --fail --show-error --location "https://wttr.in/São+Paulo?format=3"
    curl --fail --show-error --location "https://wttr.in/São+Paulo?format=1"
    curl --fail --show-error --location \
      --output sp.png \
      "https://wttr.in/São+Paulo?format=1"
    
  • Do not permit fallback from HTTPS to plaintext HTTP.

  • Retain TLS certificate verification and do not add options such as --insecure.

  • Use --fail --show-error rather than silent-only operation so HTTP and transport failures remain visible.

  • Validate the response status and expected content type before displaying or saving downloaded content.

  • URL-encode user-provided locations before incorporating them into the fallback URL.

  • Where supported, restrict redirects to HTTPS destinations and approved hosts.

Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (3)

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill sends user-supplied location data to third-party weather services, but the documentation does not clearly disclose that this data leaves the local environment. It also advertises a wttr.in fallback and includes an HTTP example elsewhere, which increases privacy and transport-security concerns because users may unknowingly expose location queries to external providers or over plaintext transport.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · SKILL.md (reported line 41)May include surrounding context.

Current weather (by co‑ordinates):

bash
curl -s "https://api.open-meteo.com/v1/forecast?latitude=-23.55\u0026longitude=-46.63\u0026current_weather=true" | jq '.current_weather'

7‑day forecast (by co‑ordinates):

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · SKILL.md (reported line 47)May include surrounding context.

Current weather (by co‑ordinates):

bash
curl -s "https://api.open-meteo.com/v1/forecast?latitude=-23.55\u0026longitude=-46.63\u0026current_weather=true" | jq '.current_weather'

7‑day forecast (by co‑ordinates):

Static analysis

No suspicious patterns detected.