Trust Assessment
swiss-geo received a trust score of 10/100, placing it in the Untrusted category. This skill has significant security findings that require attention before use in production.
SkillShield's automated analysis identified 7 findings: 6 critical, 1 high, 0 medium, and 0 low severity. Key findings include Arbitrary command execution, Remote code execution: curl/wget pipe to shell, Command Injection via Unsanitized User Input in Shell Commands.
The analysis covered 4 layers: Manifest Analysis, Static Code Analysis, Dependency Graph, LLM Behavioral Safety. The LLM Behavioral Safety layer scored lowest at 25/100, indicating areas for improvement.
Last analyzed on February 13, 2026 (commit 13146e6a). SkillShield performs automated 4-layer security analysis on AI skills and MCP servers.
Layer Breakdown
Behavioral Risk Signals
Security Findings7
| Severity | Finding | Layer | Location | |
|---|---|---|---|---|
| CRITICAL | Arbitrary command execution Remote code download piped to interpreter Review all shell execution calls. Ensure commands are static (not built from user input), use absolute paths, and are strictly necessary. Prefer library APIs over shell commands. | Manifest | skills/mbjoern/swiss-geo-and-tourism-assistant/SKILL.md:176 | |
| CRITICAL | Arbitrary command execution Remote code download piped to interpreter Review all shell execution calls. Ensure commands are static (not built from user input), use absolute paths, and are strictly necessary. Prefer library APIs over shell commands. | Manifest | skills/mbjoern/swiss-geo-and-tourism-assistant/SKILL.md:277 | |
| CRITICAL | Remote code execution: curl/wget pipe to shell Detected a pattern that downloads and immediately executes remote code. This is a primary malware delivery vector. Never pipe curl/wget output directly to a shell interpreter. | Static | skills/mbjoern/swiss-geo-and-tourism-assistant/SKILL.md:139 | |
| CRITICAL | Remote code execution: curl/wget pipe to shell Detected a pattern that downloads and immediately executes remote code. This is a primary malware delivery vector. Never pipe curl/wget output directly to a shell interpreter. | Static | skills/mbjoern/swiss-geo-and-tourism-assistant/SKILL.md:255 | |
| CRITICAL | Command Injection via Unsanitized User Input in Shell Commands The skill's examples demonstrate the construction of shell commands (e.g., `curl`) where user-controlled input (such as `SUCHTEXT`, `LON`, `LAT`, `ORTSNAME`, `station`, `query`, and Overpass API `data` parameters) is directly interpolated into the command string. If the skill's underlying execution mechanism performs simple string substitution without proper shell escaping or validation, a malicious user could inject arbitrary shell commands. This could lead to remote code execution, data exfiltration, or system compromise. Implement strict input validation and sanitization for all user-provided parameters before constructing and executing shell commands. Avoid direct string interpolation into shell commands. Instead, use secure command execution methods (e.g., `subprocess.run` with `shell=False` and a list of arguments in Python, or equivalent in other languages) that properly separate command arguments from user data. | LLM | SKILL.md:15 | |
| CRITICAL | Command Injection via `python3 -c` Execution The skill includes examples of executing Python code directly via `python3 -c "..."`. While the current Python code is for parsing JSON, if any part of the Python script itself or its input (e.g., the `station` parameter in the preceding `curl` command, which feeds into the `json.load(sys.stdin)`) were to be influenced by unsanitized user input, it could lead to arbitrary code execution. The `python3 -c` construct itself is a direct execution of a string as code, posing a significant risk if the string's content is not fully trusted. Avoid executing dynamically constructed code via `python3 -c` with user-influenced inputs. If dynamic parsing is necessary, use a secure parsing library and ensure all inputs are strictly validated and escaped. The primary fix is to prevent command injection in the `curl` command that feeds into this, but also to ensure the Python script itself is not vulnerable to code injection if its source were to be dynamically generated. | LLM | SKILL.md:198 | |
| HIGH | API Key Exposure Risk via Command Injection The skill mentions the use of `$MYSWITZERLAND_API_KEY` for authentication with the MySwitzerland API. Given the presence of multiple command injection vulnerabilities (SS-CMD-001, SS-CMD-002), an attacker could potentially craft malicious input to exfiltrate this environment variable, leading to unauthorized access to the MySwitzerland API. This constitutes a data exfiltration risk for sensitive credentials. Store API keys in a secure secrets management system rather than directly as environment variables accessible to shell processes. Ensure that the skill's execution environment strictly isolates credentials and prevents their exfiltration, even in the event of a command injection. Implement robust input sanitization to prevent command injection in the first place. | LLM | SKILL.md:300 |
Scan History
Embed Code
[](https://skillshield.io/report/59d5bb416cbccd82)
Powered by SkillShield