Back to skill

Security audit

ThermikBuddy

Security checks for vulnerabilities and agentic risk

Overview

This skill is a coherent soaring-weather helper that fetches forecast data and computes thermal scores, with normal caveats about external weather APIs and localized aviation guidance.

Before installing, understand that the skill contacts external weather services with the selected location or coordinates and returns German/Central-European soaring guidance. It should be used as a planning aid, not as a replacement for official aviation weather briefings, local regulations, or pilot judgment.

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

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

If the code uses multiple models, diagnostics, or a hardcoded location while claiming a general-purpose ICON-D2 soaring forecast, the skill is materially misrepresented. In a flight-weather skill, inaccurate or developer-oriented output can mislead pilots into unsafe decisions, making the context more dangerous than a normal content mismatch.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

If the code uses multiple models, diagnostics, or a hardcoded location while claiming a general-purpose ICON-D2 soaring forecast, the skill is materially misrepresented. In a flight-weather skill, inaccurate or developer-oriented output can mislead pilots into unsafe decisions, making the context more dangerous than a normal content mismatch.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
89% confidence
Finding

The skill invokes a Python script that fetches forecast data, which implies network access, but the manifest does not declare any tool scope or allowed-tools restriction. Undeclared capability expansion is dangerous because it hides what the skill can access and prevents least-privilege enforcement or informed review.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The invocation scope is overly broad and can trigger on generic weather or weekend flying questions, causing the skill to run outside its narrowly intended domain. Overbroad routing increases accidental data exposure, unnecessary external calls, and the chance that users receive specialized aviation advice when they only wanted general weather information.

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 natural-language description and operating instructions are fully German-language, and there is no indication that the skill should only be used for German-speaking users or that the user can choose another language. Under the policy, forcing a specific language without opt-in is a natural-language policy concern.

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/diag_params.py (reported line 13)May include surrounding context.

python
for model in models:
    print(f"\nPrüfe Modell: {model}")
    url = f"https://api.open-meteo.com/v1/forecast?latitude=47.5&longitude=11.1&hourly={','.join(vars)}&models={model}&forecast_days=1"
    
    try:
        with urllib.request.urlopen(url) as response:

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/fetcher.py (reported line 133)May include surrounding context.

python
for model in models:
    print(f"\nPrüfe Modell: {model}")
    url = f"https://api.open-meteo.com/v1/forecast?latitude=47.5&longitude=11.1&hourly={','.join(vars)}&models={model}&forecast_days=1"
    
    try:
        with urllib.request.urlopen(url) as response:

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/fetcher.py (reported line 229)May include surrounding context.

python
for model in models:
    print(f"\nPrüfe Modell: {model}")
    url = f"https://api.open-meteo.com/v1/forecast?latitude=47.5&longitude=11.1&hourly={','.join(vars)}&models={model}&forecast_days=1"
    
    try:
        with urllib.request.urlopen(url) as response:

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
96% confidence
Finding

This markdown file uses German throughout for headings, descriptions, warnings, and parameter explanations. Under the policy, forcing a specific language without user opt-in can be a natural-language policy violation unless the locale restriction is explicitly documented and justified, which is not present here.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
93% confidence
Finding

The request parameters force the timezone to "Europe/Berlin", and the file-level documentation is written only in German. Under the policy for natural-language violations, hard-coded locale behavior should either be user-selectable or clearly justified as region-specific; this file does not state such a constraint explicitly.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
90% confidence
Finding

This function again fixes the timezone to "Europe/Berlin" for date-sensitive weather retrieval. Repeating the locale constraint in operational code reinforces a region-specific assumption that is not exposed as a choice or clearly justified in the file.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
95% confidence
Finding

The module docstring presents usage and output behavior only in German, and the CLI help strings and user-facing messages throughout the file follow the same pattern. This imposes a specific language on users without opt-in, which matches the language/locale policy-violation category.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
97% confidence
Finding

The module docstring and many user-facing warning strings are written exclusively in German, indicating the skill is designed to communicate in a specific language by default. Under the policy, forcing a specific language without offering user choice or documenting a justified locale constraint is a natural-language policy violation.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.