Install
openclaw skills install skill-security-scanner-cleanSecurity scanner for OpenClaw skills. Use when installing, updating, or auditing skills to detect malicious backdoors, suspicious code patterns, data exfiltration risks, and security vulnerabilities. Automatically analyzes Python/JavaScript/Shell code for dangerous functions (eval, exec, system calls), network requests, file operations, environment variable access, obfuscation patterns, and known attack signatures. Provides security score and installation recommendations.
openclaw skills install skill-security-scanner-cleanProtect your OpenClaw installation from malicious skills. This scanner performs static analysis on skill code to detect:
eval, exec, os.system, subprocess calls# Basic scan
python scripts/security_scanner.py /path/to/skill
# Strict mode (catches more suspicious patterns)
python scripts/security_scanner.py /path/to/skill --strict
# Save JSON report
python scripts/security_scanner.py /path/to/skill --format json -o report.json
# Generate markdown report
python scripts/security_scanner.py /path/to/skill --format markdown -o report.md
| Verdict | Emoji | Meaning | Action |
|---|---|---|---|
| PASS | 🟢 | No critical issues found | Safe to install |
| REVIEW | 🟡 | Some concerns, review recommended | Check findings before installing |
| WARNING | 🟠 | High-risk patterns detected | Strongly reconsider installation |
| REJECT | 🔴 | Critical threats identified | DO NOT INSTALL |
| Rule | Description | Example |
|---|---|---|
| EXEC001 | Code execution functions | eval(), exec(), compile() |
| SUSPICIOUS001 | Keylogger functionality | pynput, keyboard modules |
| SUSPICIOUS003 | Cryptocurrency mining | mining, bitcoin, stratum+tcp |
| Rule | Description | Example |
|---|---|---|
| EXEC002 | System command execution | os.system(), subprocess.call() |
| NET002 | Raw socket connections | socket.connect() |
| ENV001 | Sensitive credential access | os.environ['PASSWORD'] |
| OBF001 | Code obfuscation | Base64, hex-encoded code |
| SUSPICIOUS002 | Screen capture | pyautogui.screenshot() |
| NET004 | Short URL usage | bit.ly, tinyurl links |
| Rule | Description | Example |
|---|---|---|
| NET001 | HTTP network requests | requests.get(), fetch() |
| ENV002 | Environment enumeration | os.environ.items() |
| FILE001 | File deletion | os.remove(), shutil.rmtree() |
| DATA001 | Unsafe deserialization | pickle.loads(), yaml.load() |
| NET003 | Hardcoded IP addresses | Direct IP in URLs |
| OBF002 | Base64 encoded blocks | Large base64 strings |
| Rule | Description |
|---|---|
| FILE002 | File write operations |
| CRYPTO001 | Cryptographic operations |
| DOC001 | Insufficient documentation |
| DOC002 | Missing security statements |
Download the skill to a temporary directory
Run the security scanner
Review the verdict:
For 🟡/🟠 findings, manually review the flagged code
Confirm the skill's behavior matches its documentation
Add to your skill installation workflow:
import subprocess
import sys
def safe_install_skill(skill_path):
# Run security scan
result = subprocess.run(
['python', 'scripts/security_scanner.py', skill_path, '--format', 'json'],
capture_output=True,
text=True
)
import json
report = json.loads(result.stdout)
if report['summary']['verdict'] == 'REJECT':
print("❌ Installation blocked: Critical security issues found")
return False
if report['summary']['verdict'] == 'WARNING':
response = input("⚠️ High-risk patterns detected. Install anyway? (y/N): ")
if response.lower() != 'y':
return False
# Proceed with installation
return True
Some legitimate skills may trigger warnings:
When you trust the source and understand the functionality, you can:
If you find a skill with confirmed malicious intent:
The scanner returns specific exit codes:
| Code | Meaning |
|---|---|
| 0 | PASS or REVIEW - installation may proceed |
| 1 | WARNING - high-risk patterns found |
| 2 | REJECT - critical threats detected |
Use in scripts:
python scripts/security_scanner.py ./skill || {
echo "Security check failed"
exit 1
}