Back to skill

Security audit

Maomao Weather Hnlq

Security checks for vulnerabilities and agentic risk

Overview

This is a straightforward weather lookup skill that sends city/location data to Open-Meteo and does not show hidden persistence, credential access, or destructive behavior.

Install this only if you are comfortable sending requested city names and approximate coordinates to Open-Meteo. If requests is missing, prefer installing dependencies in a virtual environment from a reviewed requirements file rather than running a global unpinned pip command.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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)

T08 · Insecure Dependencies

Warning
Location
scripts/weather.py:12
Finding

Unpinned Third-Party Dependency Installation

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (6)

Lp1

High
Category
MCP Least Privilege
Confidence
92% confidence
Finding

The script performs outbound network requests to third-party APIs (Open-Meteo geocoding and forecast) but the finding indicates this capability is not declared in permissions. In an agent-skill environment, undeclared network access is a real security and governance issue because user-supplied city queries are transmitted externally without explicit permissioning or transparency.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The activation description is very broad and maps to common, everyday conversation about weather, which increases the chance the skill will trigger when the user did not explicitly intend to invoke it. In an agent setting, overly broad invocation can cause unnecessary tool use and unintended transmission of user-provided location text to the weather script or downstream services.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The file’s user-facing instructions are entirely in Chinese, including headings, notes, and usage guidance, with no indication that users may choose another language. This can violate a language/locale policy when a skill effectively forces a specific language without user opt-in.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
89% confidence
Finding

The skill sends user-derived location queries and resolved coordinates to an external weather service, which constitutes external data transmission. In the context of a weather skill this behavior is expected, but it still has privacy implications because user interests or approximate locations may be exposed to third parties, especially without explicit consent or clear disclosure.

Content

Scanner excerpt · scripts/weather.py (reported line 272)May include surrounding context.

python
print(f"找到位置:{geocode_result['name']}, {geocode_result.get('admin1', '')}, {geocode_result.get('country', '')}")

    # 构建API请求URL
    url = f"https://api.open-meteo.com/v1/forecast"
    params = {
        "latitude": city["latitude"],
        "longitude": city["longitude"],

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
77% confidence
Finding

The description states '默认查询北京', which imposes a China-specific default when no city is provided. This bakes in a locale-specific assumption without offering the user a choice or documenting why that regional default is required.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
95% confidence
Finding

This code file contains natural-language behavior that forces a specific language/locale: the docstring, user-facing messages, formatted output, and API parameter all assume Chinese. Under the policy, locale constraints should offer user choice or be explicitly justified; no such opt-in or justification appears here.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.