Security Audit
moremas/build-with-claude:.claude/skills/m5-onboard
github.com/moremas/build-with-claudeTrust Assessment
moremas/build-with-claude:.claude/skills/m5-onboard 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 25 findings: 9 critical, 12 high, 4 medium, and 0 low severity. Key findings include Persistence / self-modification instructions, Arbitrary command execution, File read + network send exfiltration.
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 July 17, 2026 (commit b3b58887). SkillShield performs automated 4-layer security analysis on AI skills and MCP servers.
Layer Breakdown
Behavioral Risk Signals
Security Findings25
| Severity | Finding | Layer | Location | |
|---|---|---|---|---|
| CRITICAL | Persistence / self-modification instructions Shell RC file modification for persistence Remove any persistence mechanisms. Skills should not modify system startup configurations, crontabs, LaunchAgents, systemd services, or shell profiles. | Manifest | .claude/skills/m5-onboard/scripts/onboard.py:918 | |
| 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 | .claude/skills/m5-onboard/scripts/detect.py:120 | |
| 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 | .claude/skills/m5-onboard/scripts/flash.py:74 | |
| 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 | .claude/skills/m5-onboard/scripts/flash.py:113 | |
| 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 | .claude/skills/m5-onboard/scripts/flash.py:162 | |
| 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 | .claude/skills/m5-onboard/scripts/onboard.py:223 | |
| 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 | .claude/skills/m5-onboard/scripts/onboard.py:374 | |
| 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 | .claude/skills/m5-onboard/scripts/onboard.py:843 | |
| CRITICAL | File read + network send exfiltration AI agent config/credential file access Remove access to sensitive files not required by the skill's stated purpose. SSH keys, cloud credentials, and browser data should never be read by skills unless explicitly part of their declared functionality. | Manifest | .claude/skills/m5-onboard/scripts/install_apps.py:405 | |
| HIGH | 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 | .claude/skills/m5-onboard/scripts/onboard.py:747 | |
| HIGH | 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 | .claude/skills/m5-onboard/scripts/vendor/serial/serialutil.py:167 | |
| HIGH | Unsafe deserialization / dynamic eval Python builtins/import manipulation 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 | .claude/skills/m5-onboard/scripts/vendor/serial/serialjava.py:16 | |
| HIGH | Dangerous call: subprocess.check_output() Call to 'subprocess.check_output()' detected in function 'probe'. This can execute arbitrary code. Avoid using dangerous functions like exec/eval/os.system. Use safer alternatives. | Static | .claude/skills/m5-onboard/scripts/detect.py:120 | |
| HIGH | Dangerous call: subprocess.check_call() Call to 'subprocess.check_call()' detected in function '_run_esptool'. This can execute arbitrary code. Avoid using dangerous functions like exec/eval/os.system. Use safer alternatives. | Static | .claude/skills/m5-onboard/scripts/flash.py:74 | |
| HIGH | Dangerous call: subprocess.Popen() Call to 'subprocess.Popen()' detected in function 'write'. This can execute arbitrary code. Avoid using dangerous functions like exec/eval/os.system. Use safer alternatives. | Static | .claude/skills/m5-onboard/scripts/flash.py:162 | |
| HIGH | Dangerous call: subprocess.run() Call to 'subprocess.run()' detected in function 'native_reset'. This can execute arbitrary code. Avoid using dangerous functions like exec/eval/os.system. Use safer alternatives. | Static | .claude/skills/m5-onboard/scripts/flash.py:113 | |
| HIGH | Dangerous call: subprocess.check_call() Call to 'subprocess.check_call()' detected in function 'run_sub'. This can execute arbitrary code. Avoid using dangerous functions like exec/eval/os.system. Use safer alternatives. | Static | .claude/skills/m5-onboard/scripts/onboard.py:223 | |
| HIGH | Dangerous call: subprocess.run() Call to 'subprocess.run()' detected in function '_native_bootloader_responds'. This can execute arbitrary code. Avoid using dangerous functions like exec/eval/os.system. Use safer alternatives. | Static | .claude/skills/m5-onboard/scripts/onboard.py:374 | |
| HIGH | Dangerous call: subprocess.check_call() Call to 'subprocess.check_call()' detected in function '_preflight'. This can execute arbitrary code. Avoid using dangerous functions like exec/eval/os.system. Use safer alternatives. | Static | .claude/skills/m5-onboard/scripts/onboard.py:843 | |
| HIGH | Dangerous call: __import__() Call to '__import__()' detected in function 'my_import'. This can execute arbitrary code. Avoid using dangerous functions like exec/eval/os.system. Use safer alternatives. | Static | .claude/skills/m5-onboard/scripts/vendor/serial/serialjava.py:16 | |
| HIGH | Insecure SSL/TLS Verification Bypass Fallback The `_open_https` function in `fetch_firmware.py` attempts to verify SSL certificates. However, if verification fails, it falls back to importing and using `certifi`. If `certifi` is not installed, it exits with a message suggesting the user run `pip install --user certifi`. While it does not silently disable verification, the fallback mechanism relies on an optional dependency (`certifi`) that may not be pinned or verified, and the script's execution environment is highly dynamic, potentially allowing local attackers to influence the trust store or python path. Ensure `certifi` is a strictly pinned dependency in `requirements.txt` rather than an optional runtime import fallback, ensuring that TLS verification always uses a known, secure trust store. | LLM | scripts/fetch_firmware.py:70 | |
| MEDIUM | Suspicious import: urllib.request Import of 'urllib.request' 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 | .claude/skills/m5-onboard/scripts/fetch_firmware.py:22 | |
| 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 | .claude/skills/m5-onboard/scripts/vendor/serial/rfc2217.py:64 | |
| 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 | .claude/skills/m5-onboard/scripts/vendor/serial/urlhandler/protocol_socket.py:24 | |
| MEDIUM | Sensitive environment variable access: $USER Access to sensitive environment variable '$USER' detected in shell context. Verify this environment variable access is necessary and the value is not exfiltrated. | Static | .claude/skills/m5-onboard/SKILL.md:174 |
Scan History
Embed Code
[](https://skillshield.io/report/12749ee26453c4df)
Powered by SkillShield