Back to skill

Security audit

Weather Open-Meteo

Security checks for vulnerabilities and agentic risk

Overview

This weather skill's API use is understandable, but it ships only documentation while telling users to run missing PowerShell scripts and make a persistent PowerShell security-policy change.

Review this before installing. Do not run the persistent Set-ExecutionPolicy command unless you understand and accept the PowerShell security tradeoff; direct API requests do not require it. Also verify that the actual .ps1 scripts are present from a trusted source before trying to run them, because they were not included in the inspected package. Weather queries will contact Open-Meteo with the requested location coordinates and timezone.

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
README.md:17
Finding

Persistent User-Wide Weakening of the PowerShell Execution Policy

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • 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 (32)

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
- `SKILL.md` - Skill description

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The entire skill publishing document is written in Chinese, and the file gives no indication that users may choose another language for instructions. The policy requires flagging language or locale constraints when a skill forces a specific language without user opt-in, and this file does not present a choice within the document itself.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
82% confidence
Finding

The README states a fixed timezone of Asia/Shanghai, which is a locale-specific constraint. The document does not explain that this limitation is optional, region-specific by design, or configurable by the user, so it can be read as forcing a locale without opt-in.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The phrase '专为中文用户设计' indicates the skill is intended specifically for Chinese users, and the README is entirely presented in Chinese without noting optional language support. That creates a natural-language locale preference that is not framed as user-selectable or otherwise justified as region-specific compliance.

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 · CREATION.md (reported line 59)May include surrounding context.

powershell
# 当前天气
Invoke-WebRequest -Uri "https://api.open-meteo.com/v1/forecast?latitude=31.2304&longitude=121.4737&current_weather=true" -UseBasicParsing

# 7天预报
Invoke-WebRequest -Uri "https://api.open-meteo.com/v1/forecast?latitude=31.2304&longitude=121.4737&daily=weathercode,temperature_2m_max,temperature_2m_min,precipitation_sum&timezone=Asia%2FShanghai" -UseBasicParsing

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 · CREATION.md (reported line 102)May include surrounding context.

powershell
# 当前天气
Invoke-WebRequest -Uri "https://api.open-meteo.com/v1/forecast?latitude=31.2304&longitude=121.4737&current_weather=true" -UseBasicParsing

# 7天预报
Invoke-WebRequest -Uri "https://api.open-meteo.com/v1/forecast?latitude=31.2304&longitude=121.4737&daily=weathercode,temperature_2m_max,temperature_2m_min,precipitation_sum&timezone=Asia%2FShanghai" -UseBasicParsing

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 · PUBLISH.md (reported line 90)May include surrounding context.

powershell
# 当前天气
Invoke-WebRequest -Uri "https://api.open-meteo.com/v1/forecast?latitude=31.2304&longitude=121.4737&current_weather=true" -UseBasicParsing

# 7天预报
Invoke-WebRequest -Uri "https://api.open-meteo.com/v1/forecast?latitude=31.2304&longitude=121.4737&daily=weathercode,temperature_2m_max,temperature_2m_min,precipitation_sum&timezone=Asia%2FShanghai" -UseBasicParsing

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 · QUICK-REF.md (reported line 118)May include surrounding context.

powershell
# 当前天气
Invoke-WebRequest -Uri "https://api.open-meteo.com/v1/forecast?latitude=31.2304&longitude=121.4737&current_weather=true" -UseBasicParsing

# 7天预报
Invoke-WebRequest -Uri "https://api.open-meteo.com/v1/forecast?latitude=31.2304&longitude=121.4737&daily=weathercode,temperature_2m_max,temperature_2m_min,precipitation_sum&timezone=Asia%2FShanghai" -UseBasicParsing

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 · QUICK-REF.md (reported line 127)May include surrounding context.

powershell
# 当前天气
Invoke-WebRequest -Uri "https://api.open-meteo.com/v1/forecast?latitude=31.2304&longitude=121.4737&current_weather=true" -UseBasicParsing

# 7天预报
Invoke-WebRequest -Uri "https://api.open-meteo.com/v1/forecast?latitude=31.2304&longitude=121.4737&daily=weathercode,temperature_2m_max,temperature_2m_min,precipitation_sum&timezone=Asia%2FShanghai" -UseBasicParsing

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 · README-GITHUB.md (reported line 89)May include surrounding context.

powershell
# 当前天气
Invoke-WebRequest -Uri "https://api.open-meteo.com/v1/forecast?latitude=31.2304&longitude=121.4737&current_weather=true" -UseBasicParsing

# 7天预报
Invoke-WebRequest -Uri "https://api.open-meteo.com/v1/forecast?latitude=31.2304&longitude=121.4737&daily=weathercode,temperature_2m_max,temperature_2m_min,precipitation_sum&timezone=Asia%2FShanghai" -UseBasicParsing

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 · README.md (reported line 50)May include surrounding context.

powershell
# 当前天气
Invoke-WebRequest -Uri "https://api.open-meteo.com/v1/forecast?latitude=31.2304&longitude=121.4737&current_weather=true" -UseBasicParsing

# 7天预报
Invoke-WebRequest -Uri "https://api.open-meteo.com/v1/forecast?latitude=31.2304&longitude=121.4737&daily=weathercode,temperature_2m_max,temperature_2m_min,precipitation_sum&timezone=Asia%2FShanghai" -UseBasicParsing

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 · README.md (reported line 53)May include surrounding context.

powershell
# 当前天气
Invoke-WebRequest -Uri "https://api.open-meteo.com/v1/forecast?latitude=31.2304&longitude=121.4737&current_weather=true" -UseBasicParsing

# 7天预报
Invoke-WebRequest -Uri "https://api.open-meteo.com/v1/forecast?latitude=31.2304&longitude=121.4737&daily=weathercode,temperature_2m_max,temperature_2m_min,precipitation_sum&timezone=Asia%2FShanghai" -UseBasicParsing

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 69)May include surrounding context.

powershell
# 当前天气
Invoke-WebRequest -Uri "https://api.open-meteo.com/v1/forecast?latitude=31.2304&longitude=121.4737&current_weather=true" -UseBasicParsing

# 7天预报
Invoke-WebRequest -Uri "https://api.open-meteo.com/v1/forecast?latitude=31.2304&longitude=121.4737&daily=weathercode,temperature_2m_max,temperature_2m_min,precipitation_sum&timezone=Asia%2FShanghai" -UseBasicParsing

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 78)May include surrounding context.

powershell
# 当前天气
Invoke-WebRequest -Uri "https://api.open-meteo.com/v1/forecast?latitude=31.2304&longitude=121.4737&current_weather=true" -UseBasicParsing

# 7天预报
Invoke-WebRequest -Uri "https://api.open-meteo.com/v1/forecast?latitude=31.2304&longitude=121.4737&daily=weathercode,temperature_2m_max,temperature_2m_min,precipitation_sum&timezone=Asia%2FShanghai" -UseBasicParsing

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 · SUMMARY.md (reported line 117)May include surrounding context.

powershell
# 当前天气
Invoke-WebRequest -Uri "https://api.open-meteo.com/v1/forecast?latitude=31.2304&longitude=121.4737&current_weather=true" -UseBasicParsing

# 7天预报
Invoke-WebRequest -Uri "https://api.open-meteo.com/v1/forecast?latitude=31.2304&longitude=121.4737&daily=weathercode,temperature_2m_max,temperature_2m_min,precipitation_sum&timezone=Asia%2FShanghai" -UseBasicParsing

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 · USAGE.md (reported line 54)May include surrounding context.

powershell
# 当前天气
Invoke-WebRequest -Uri "https://api.open-meteo.com/v1/forecast?latitude=31.2304&longitude=121.4737&current_weather=true" -UseBasicParsing

# 7天预报
Invoke-WebRequest -Uri "https://api.open-meteo.com/v1/forecast?latitude=31.2304&longitude=121.4737&daily=weathercode,temperature_2m_max,temperature_2m_min,precipitation_sum&timezone=Asia%2FShanghai" -UseBasicParsing

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 · USAGE.md (reported line 63)May include surrounding context.

powershell
# 当前天气
Invoke-WebRequest -Uri "https://api.open-meteo.com/v1/forecast?latitude=31.2304&longitude=121.4737&current_weather=true" -UseBasicParsing

# 7天预报
Invoke-WebRequest -Uri "https://api.open-meteo.com/v1/forecast?latitude=31.2304&longitude=121.4737&daily=weathercode,temperature_2m_max,temperature_2m_min,precipitation_sum&timezone=Asia%2FShanghai" -UseBasicParsing

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The troubleshooting guidance tells users to change PowerShell's execution policy to RemoteSigned without warning about the security implications or suggesting narrower, safer alternatives. Lowering execution restrictions can make it easier for a user to run untrusted scripts in the future, expanding attack surface beyond this weather skill.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The documentation instructs users to run Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser as troubleshooting guidance without explaining the security tradeoff. Lowering or changing execution policy can make it easier for users to run untrusted scripts, increasing exposure to malicious or tampered PowerShell content beyond this skill.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The document title and all instructions are presented only in Chinese, which imposes a specific language on the user without any stated opt-in or alternative. The policy explicitly flags language or locale constraints when the skill does not offer a user choice.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

This markdown file presents the skill instructions exclusively in Chinese, which effectively forces a specific language on users. The policy allows locale constraints only when the skill offers user choice or clearly documents a justified region-specific limitation, neither of which is present here.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
83% confidence
Finding

The document states that weather codes are translated to Chinese descriptions and that the skill supports English and Chinese display, while the overall file content and examples strongly center Chinese usage. This can indicate a locale-specific behavior that is not framed as user choice or opt-in, which may conflict with language/locale policy requirements.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
92% confidence
Finding

This markdown file is written as a user-facing project summary but presents its primary instructions and description in Chinese, while describing the skill as optimized for Chinese/bilingual output. Under the language/locale policy rule, forcing a specific language without explicit user opt-in or choice can be a policy concern.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
86% confidence
Finding

The document states the time zone is '亚洲/上海 (GMT+8)' as a fixed setting. Under the policy, forcing a specific locale without user opt-in can be a natural-language policy violation unless the regional constraint is clearly documented and justified; this publish document does not explain that limitation or offer alternatives.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
93% confidence
Finding

The title explicitly presents this file as a Chinese quick reference ("快速参考"), and the content is predominantly in Chinese, while no opt-in or alternative-language note is provided within this file. Under the policy rule, forcing a specific language without user choice is a natural-language locale violation unless clearly documented as region-specific or optional.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.