Back to skill

Security audit

weather_advanced

Security checks for vulnerabilities and agentic risk

Overview

This is a straightforward Chinese-language weather lookup skill that sends a city name to a third-party weather API and returns formatted forecast information.

Install only if you are comfortable with city names being sent to api.vvhan.com for weather results. The skill appears limited to Chinese-language weather responses and does not request credentials, modify local data, or persist across sessions.

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
  • YARA SignaturesMalware Match, Webshell Match, Cryptominer Match
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (4)

YARA rule 'agent_skill_mcp_tool_poisoning_metadata': MCP/tool metadata poisoning indicators in tool schemas or skill manifests [agent_skills]

High
Category
YARA Match
Confidence
80% confidence
Finding

YARA rule matched a hack tool or exploit indicator (offensive tools, reconnaissance, privilege escalation, or exploit frameworks).

Content

Scanner excerpt · skills.md (reported line 10)May include surrounding context.

md
from skills.base import BaseSkill
import requests
from typing import Dict, Any

class WeatherAdvancedSkill(BaseSkill):
    # 技能唯一标识,和基础版区分,平台不冲突
    name = "weather_advanced_query"
    
    # 大模型触发专用描述,精准匹配用户意图,自动调用率高
    description = "专业级全国城市天气查询,包含实时天气、未来7天预报、空气质量、生活指数、紫外线、穿衣建议、感冒风险等全维度信息"

    def execute(self, params: Dict[str, Any]) -> str:
        """技能执行入口,标配参数校验和异常捕获"""
        # 校验必填参数
        city = params.get("city", "").strip()
        if not city:
            return "🙋‍♂️ 请告诉我需要查询的城市名称,比如北京、杭州、成都哦~"

        try:
            # 调用优化版稳定接口,超时短、容错

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
85% confidence
Finding

The skill's natural-language content, including comments, description, and returned user prompt, is exclusively in Chinese. This can violate language or locale policy when the skill does not offer users a language choice or document that it is intentionally limited to a Chinese-speaking context.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
82% confidence
Finding

The skill makes an outbound request to a third-party service and transmits user-supplied input without any trust boundary controls, allowlist documentation, or privacy disclosure. While only a city name is sent here, external transmission introduces data exposure, dependency, and integrity risks if the remote service is compromised, logs requests, or returns manipulated content.

Content

Scanner excerpt · skills.md (reported line 38)May include surrounding context.

md
升级版专用接口:免费无Key、国内高速、数据全面
        支持实时天气+7天预报+空气质量+生活指数,适配国内所有地级市
        """
        url = "https://api.vvhan.com/api/weather"
        headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"}
        params = {"city": city, "type": "all"}

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
90% confidence
Finding

This code sends the user's requested city to a third-party HTTP endpoint using requests.get. While the network call is visible in code comments, there is no user-facing notice, confirmation, or warning that user input will be transmitted to an external service.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.