Back to skill

Security audit

彩云天气 / Caiyun Weather

Security checks for vulnerabilities and agentic risk

Overview

This skill is a straightforward weather lookup tool that uses disclosed external weather and geocoding APIs with no persistence or unrelated local access.

Install only if you are comfortable providing a Caiyun Weather API token and having requested cities or coordinates sent to Caiyun, with unresolved city names sent to OpenStreetMap for geocoding. The skill appears purpose-aligned and does not show hidden persistence or unrelated access.

Vulnerability Patterns
  • 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
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • 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
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (5)

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
91% confidence
Finding

The skill invokes a Python script that uses an environment variable for an API token and performs outbound network requests, but the manifest does not declare an explicit tool/permission scope such as allowed-tools or permissions. This creates a least-privilege and transparency gap: an agent or reviewer cannot easily constrain or audit what external access the skill is expected to use, increasing the risk of unintended network use or secret exposure if the script is modified or misused.

Content

No source excerpt is available for this finding.

Ae4

Medium
Category
analysis-evasion
Confidence
80% confidence
Finding

Suspicious Unicode normalization or mixed-script content

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% 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 · scripts/caiyun_weather.py (reported line 13)May include surrounding context.

python
from datetime import datetime, timedelta


API_BASE = "https://api.caiyunapp.com/v2.6"

# Built-in city coordinates (lng, lat)
CITY_COORDS = {

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The code hard-codes lang to en_US in user-facing weather queries, which imposes a specific language/locale regardless of user preference. This matches the policy category for language or locale constraints without opt-in, and the same pattern repeats in other commands.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Low
Category
Not specified by scanner
Confidence
96% confidence
Finding

The skill advertises Caiyun Weather API usage but silently sends user-supplied city names to a second external service, OpenStreetMap Nominatim, for fallback geocoding. This expands data disclosure and trust boundaries beyond what users may expect, potentially leaking queried locations and metadata to an undeclared third party.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.