Back to skill

Security audit

Weather Broadcast

Security checks for vulnerabilities and agentic risk

Overview

This skill does what it says: it fetches weather and sends generated forecast text to SenseAudio to create an audio file.

Before installing, understand that weather locations and generated broadcast text may be sent to third-party services, and your SenseAudio API key is used when calling SenseAudio. Avoid using precise home/work addresses or sensitive personal details in broadcast text.

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
  • 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 (6)

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

md
env:
        - SENSEAUDIO_API_KEY
      bins:
        - curl
        - jq
    primaryEnv: SENSEAUDIO_API_KEY
    homepage: https://senseaudio.cn/docs

External Transmission

Medium
Category
Data Exfiltration
Confidence
94% confidence
Finding

The shell example sends weather-derived broadcast text to the external SenseAudio TTS endpoint. This is expected for a cloud TTS skill, but it remains a real data exposure path because the text may include user-provided location information and there is no warning, consent gate, or data sensitivity guidance.

Content

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

md
BROADCAST_TEXT="天气播报:${WEATHER}。祝您出行愉快!"

# Call SenseAudio TTS / 调用 SenseAudio TTS
curl -X POST https://api.senseaudio.cn/v1/t2a_v2 \
  -H "Authorization: Bearer $SENSEAUDIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d "{

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

bash
# Get coordinates first, then query / 先获取坐标,再查询
# Beijing: 39.9, 116.4
curl -s "https://api.open-meteo.com/v1/forecast?latitude=39.9&longitude=116.4&current_weather=true"

Complete Python Example / 完整 Python 示例

External Transmission

Medium
Category
Data Exfiltration
Confidence
88% confidence
Finding

Defining the external SenseAudio TTS endpoint in code is part of the mechanism that transmits generated text off-host. In context this is not malicious, but it contributes to a real third-party data flow involving potentially user-derived location/weather content and should be treated as an external transmission concern.

Content

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

md
import os

SENSEAUDIO_API_KEY = os.environ.get("SENSEAUDIO_API_KEY")
TTS_URL = "https://api.senseaudio.cn/v1/t2a_v2"

def get_weather(city: str, lang: str = "zh") -> str:
    """Fetch weather from wttr.in / 从 wttr.in 获取天气"""

External Transmission

Medium
Category
Data Exfiltration
Confidence
90% confidence
Finding

The Python example posts generated broadcast text to the external SenseAudio API, which means user-supplied or fetched content leaves the local environment. In context this is expected functionality, but it is still a genuine external data transmission risk because potentially sensitive location-derived text is sent to a third party without minimization or explicit consent handling.

Content

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

md
}
    }

    resp = requests.post(TTS_URL, json=payload, headers=headers, timeout=30)
    result = resp.json()

    if result.get("data") and result["data"].get("audio"):

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
92% confidence
Finding

The skill sends location and weather-query data to third-party services (wttr.in and SenseAudio) but does not clearly warn users that their requested city and generated broadcast text will be transmitted externally. This is a real privacy/transparency issue, though the data involved is typically low sensitivity unless users supply precise or personal locations.

Content

No source excerpt is available for this finding.