Trust Assessment
openclaw-whisperer 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 20 findings: 6 critical, 7 high, 7 medium, and 0 low severity. Key findings include Arbitrary command execution, Unsafe deserialization / dynamic eval, Dangerous call: subprocess.run().
The analysis covered 4 layers: Manifest Analysis, Static Code Analysis, Dependency Graph, LLM Behavioral Safety. The Manifest Analysis layer scored lowest at 0/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 Findings20
| Severity | Finding | Layer | Location | |
|---|---|---|---|---|
| CRITICAL | Arbitrary command execution Python shell execution (os.system, subprocess) 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/phenixstar/openclaw-whisperer/scripts/lib/clawhub_client.py:37 | |
| CRITICAL | Arbitrary command execution Python shell execution (os.system, subprocess) 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/phenixstar/openclaw-whisperer/scripts/lib/doc_fetcher.py:29 | |
| CRITICAL | Arbitrary command execution Python shell execution (os.system, subprocess) 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/phenixstar/openclaw-whisperer/scripts/lib/doc_fetcher.py:48 | |
| CRITICAL | Arbitrary command execution Python shell execution (os.system, subprocess) 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/phenixstar/openclaw-whisperer/scripts/lib/doc_fetcher.py:115 | |
| CRITICAL | Arbitrary command execution Python shell execution (os.system, subprocess) 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/phenixstar/openclaw-whisperer/scripts/lib/doc_fetcher.py:128 | |
| CRITICAL | Arbitrary command execution Python shell execution (os.system, subprocess) 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/phenixstar/openclaw-whisperer/scripts/lib/utils.py:102 | |
| HIGH | Dangerous call: subprocess.run() Call to 'subprocess.run()' detected in function '_run_clawhub'. This can execute arbitrary code. Avoid using dangerous functions like exec/eval/os.system. Use safer alternatives. | Static | skills/phenixstar/openclaw-whisperer/scripts/lib/clawhub_client.py:37 | |
| HIGH | Dangerous call: subprocess.run() Call to 'subprocess.run()' detected in function 'check_reachability'. This can execute arbitrary code. Avoid using dangerous functions like exec/eval/os.system. Use safer alternatives. | Static | skills/phenixstar/openclaw-whisperer/scripts/lib/doc_fetcher.py:29 | |
| HIGH | Dangerous call: subprocess.run() Call to 'subprocess.run()' detected in function 'fetch_error_codes'. This can execute arbitrary code. Avoid using dangerous functions like exec/eval/os.system. Use safer alternatives. | Static | skills/phenixstar/openclaw-whisperer/scripts/lib/doc_fetcher.py:48 | |
| HIGH | Dangerous call: subprocess.run() Call to 'subprocess.run()' detected in function 'get_version_info'. This can execute arbitrary code. Avoid using dangerous functions like exec/eval/os.system. Use safer alternatives. | Static | skills/phenixstar/openclaw-whisperer/scripts/lib/doc_fetcher.py:115 | |
| HIGH | Dangerous call: subprocess.run() Call to 'subprocess.run()' detected in function 'get_version_info'. This can execute arbitrary code. Avoid using dangerous functions like exec/eval/os.system. Use safer alternatives. | Static | skills/phenixstar/openclaw-whisperer/scripts/lib/doc_fetcher.py:128 | |
| HIGH | Dangerous call: subprocess.run() Call to 'subprocess.run()' detected in function 'run_command'. This can execute arbitrary code. Avoid using dangerous functions like exec/eval/os.system. Use safer alternatives. | Static | skills/phenixstar/openclaw-whisperer/scripts/lib/utils.py:102 | |
| HIGH | Arbitrary file read via --input option The `error-fixer.py` script accepts an `--input` argument which is used to specify a log file for analysis. The `click.Path(exists=True)` validation only checks for file existence, not for its location or sensitivity. This allows an attacker to specify an arbitrary file path (e.g., `/etc/passwd`, `/root/.ssh/id_rsa`) on the system. The script then reads the content of this file using `parser.parse_log_file()` and displays it to the console, leading to potential data exfiltration. Restrict the `--input` path to a safe, designated log directory (e.g., `~/.openclaw/logs/`) or implement stricter path validation to prevent reading arbitrary system files. Alternatively, ensure that any data read from user-controlled paths is never displayed or used in a way that could lead to information disclosure or further exploitation. | LLM | scripts/error-fixer.py:49 | |
| MEDIUM | Unsafe deserialization / dynamic eval Decryption followed by code execution Remove obfuscated code execution patterns. Legitimate code does not need base64-encoded payloads executed via eval, encrypted-then-executed blobs, or dynamic attribute resolution to call system functions. | Manifest | skills/phenixstar/openclaw-whisperer/scripts/lib/doc_fetcher.py:1 | |
| MEDIUM | Suspicious import: socket Import of 'socket' detected. This module provides network or low-level system access. Verify this import is necessary. Network and system modules in skill code may indicate data exfiltration. | Static | skills/phenixstar/openclaw-whisperer/scripts/lib/system_checks.py:5 | |
| MEDIUM | Unpinned Python dependency version Requirement 'click>=8.1.0' is not pinned to an exact version. Pin Python dependencies with '==<exact version>'. | Dependencies | skills/phenixstar/openclaw-whisperer/requirements.txt:1 | |
| MEDIUM | Unpinned Python dependency version Requirement 'rich>=13.0.0' is not pinned to an exact version. Pin Python dependencies with '==<exact version>'. | Dependencies | skills/phenixstar/openclaw-whisperer/requirements.txt:2 | |
| MEDIUM | Unpinned Python dependency version Requirement 'requests>=2.31.0' is not pinned to an exact version. Pin Python dependencies with '==<exact version>'. | Dependencies | skills/phenixstar/openclaw-whisperer/requirements.txt:3 | |
| MEDIUM | Unpinned Python dependency version Requirement 'beautifulsoup4>=4.12.0' is not pinned to an exact version. Pin Python dependencies with '==<exact version>'. | Dependencies | skills/phenixstar/openclaw-whisperer/requirements.txt:4 | |
| MEDIUM | External CLI calls with unsanitized user input The `ClawHubClient` class in `scripts/lib/clawhub_client.py` makes calls to the external `clawhub` CLI using `subprocess.run`. The `search` method passes the `query` parameter, and the `get_skill_info` method passes the `slug` parameter, directly from user input (via `skill-recommender.py`'s `--use-case`, `--channel`, or `--complementary-for` options) into the `clawhub` command arguments. Although `subprocess.run` is used with a list of arguments (mitigating simple shell injection), if the `clawhub` binary itself is vulnerable to argument injection or command execution through specially crafted arguments, this could lead to arbitrary command execution. Implement strict sanitization or whitelisting for user-provided `query` and `slug` values before passing them to the `clawhub` CLI. Ensure that `clawhub` arguments are properly escaped if the `clawhub` CLI is known to interpret special characters within its arguments. If possible, use a library or API for `clawhub` interaction instead of direct CLI calls. | LLM | scripts/lib/clawhub_client.py:49 |
Scan History
Embed Code
[](https://skillshield.io/report/509cd17dd6e66a16)
Powered by SkillShield