crusty-security

Security and threat scanning skill for OpenClaw agents. Scans files and skills for malware. Monitors agent behavior for compromise indicators. Audits host security posture. Triggers on: "scan this file", "is this safe", "virus scan", "malware check", "security scan", "scan for threats", "check this download", "quarantine", "scan my system", "threat report", "scheduled scan", "audit host security", "audit this skill", "check agent integrity", "security report", "monitor agent".

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "crusty-security" with this command: npx skills add silentcool/crusty-security

Crusty Security — Security & Threat Scanning

Overview

Crusty Security protects OpenClaw agents against real threats: malware in downloaded files, compromised skills from ClawHub, data exfiltration, prompt injection payloads, and host-level compromise. It uses ClamAV for file scanning and AI-agent-specific static analysis.

Threat model: The agent itself is the attack surface. Prompt injection can lead to code execution. Malicious skills run with agent privileges. Crusty Security protects both the host AND the agent's integrity.

Quick Reference

TaskCommand
Install ClamAVbash scripts/install_clamav.sh
Scan a filebash scripts/scan_file.sh /path/to/file
Scan a directorybash scripts/scan_file.sh -r /path/to/dir
Audit a skillbash scripts/audit_skill.sh /path/to/skill/
Host security auditbash scripts/host_audit.sh
Monitor agent integritybash scripts/monitor_agent.sh
Generate security reportbash scripts/generate_report.sh

All scripts output JSON. All scripts support --help. All paths are relative to this skill directory.

Setup (First Run)

Run bash setup.sh — that's it. This will:

  1. Install ClamAV if missing
  2. Configure freshclam (macOS Homebrew fix)
  3. Send initial heartbeat to dashboard (if CRUSTY_API_KEY set)
  4. Run initial host audit + workspace scan (populates dashboard immediately)
  5. Check which scheduled scans need to be created

⚠️ IMPORTANT — After setup.sh, you MUST create the cron jobs below using the OpenClaw cron tool. Setup.sh handles the bash-level installation, but cron jobs require agent-level tools. Do this immediately after first install — don't wait for the user to ask.

Required Cron Jobs (create on first install)

Check what's missing: bash scripts/check_crons.sh

Use the OpenClaw cron tool (cron add) to create these. Replace {SKILL_DIR} with the actual path to this skill directory and {WORKSPACE} with the workspace path (usually /data/workspace).

NameSchedulesessionTargetPayload
crusty-daily-scancron 0 3 * * *main / systemEventRun Crusty Security daily scan: bash {SKILL_DIR}/scripts/scan_file.sh --incremental -r {WORKSPACE} && bash {SKILL_DIR}/scripts/monitor_agent.sh
crusty-weekly-fullcron 0 3 * * 0main / systemEventRun Crusty Security weekly scan: bash {SKILL_DIR}/scripts/scan_file.sh -r {WORKSPACE} && bash {SKILL_DIR}/scripts/host_audit.sh && bash {SKILL_DIR}/scripts/generate_report.sh --output /tmp/crusty_logs/weekly_report.md
crusty-monthly-deepcron 0 4 1 * *main / systemEventRun Crusty Security monthly deep audit: bash {SKILL_DIR}/scripts/host_audit.sh --deep

Dashboard Cron Jobs (only if CRUSTY_API_KEY is set)

NameSchedulesessionTargetPayload
crusty-heartbeatevery 300000ms (5 min)main / systemEventCrusty Security heartbeat: Run bash {SKILL_DIR}/scripts/dashboard.sh heartbeat
crusty-clawhub-syncevery 43200000ms (12h)isolated / agentTurnRun ClawHub security sync: python3 {SKILL_DIR}/scripts/clawhub_sync.py --push. Report any critical or high severity findings.

Check cron list first — skip any that already exist (match by name prefix crusty-).

See references/setup.md for detailed configuration.

Dashboard Connection

If your human has configured CRUSTY_API_KEY, the skill sends scan results to the Crusty Security dashboard (crustysecurity.com):

  • Heartbeats are sent every 5 minutes automatically — keeps the dashboard showing agent status
  • Scan results are pushed when you add --push to scan commands
  • ClawHub sync sends skill inventory with python3 scripts/clawhub_sync.py --push
  • If CRUSTY_API_KEY is NOT set, everything works locally — no data is sent anywhere
  • The dashboard never connects TO the agent — data flows one way (agent → dashboard)

Scanning Workflows

File Scanning

Triggers: "scan this file", "is this safe", "check this download", "virus scan"

  1. Run bash scripts/scan_file.sh <path> for ClamAV local scan
  2. Report results:
    • ✅ Clean — "No threats detected. Scanned with ClamAV, signatures from [date]."
    • ⚠️ Suspicious — "Low-confidence detection by ClamAV. Recommend quarantine for review."
    • 🚨 Malicious — "Threat detected: [name]. Recommend quarantine. Options: quarantine, delete, or ignore."

For directories:

bash scripts/scan_file.sh -r /data/workspace      # Full recursive scan
bash scripts/scan_file.sh -r --incremental /data/workspace  # Skip unchanged files

Quarantine workflow:

bash scripts/scan_file.sh --quarantine /path/to/file   # Move to quarantine
# Quarantine location: $CRUSTY_QUARANTINE (default: /tmp/crusty_quarantine)
# Manifest: /tmp/crusty_quarantine/manifest.json

Important notes:

  • ClamAV prefers clamdscan (daemon) when available, falls back to clamscan
  • Max file size default: 200M (configurable via CRUSTY_MAX_FILE_SIZE)
  • Encrypted archives: flagged as "unscanned" — cannot inspect contents
  • Large archives: ClamAV handles zip, rar, 7z, tar, gz natively

Skill Auditing (Supply Chain Security)

Triggers: "audit this skill", "is this skill safe", "check skill security", "scan skill"

bash scripts/audit_skill.sh /path/to/skill/directory/

What it checks:

  • 🔴 Critical: curl/wget piped to shell, reverse shell patterns, crypto mining indicators
  • 🟠 High: eval/exec with dynamic input, base64 decode patterns, data exfiltration endpoints (webhook.site, ngrok, etc.), credential harvesting, binary executables, agent config modification
  • 🟡 Medium: hidden files, system file access, hardcoded IPs, obfuscated code, persistence mechanisms (cron, systemd)
  • 🔵 Low/Info: large skill size, credential references in docs

Output: Risk score (low/medium/high/critical) + detailed findings with evidence.

When to use:

  • Before installing any skill from ClawHub
  • When reviewing third-party skill contributions
  • Periodically on all installed skills: for d in /data/workspace/skills/*/; do bash scripts/audit_skill.sh "$d"; done

Host Security Audit

Triggers: "audit host", "security audit", "check host security"

bash scripts/host_audit.sh or bash scripts/host_audit.sh --deep

Checks:

  • Suspicious cron jobs (curl piping, base64, reverse shells)
  • Unexpected listening ports
  • Recently modified system files (deep mode)
  • SSH key audit (excessive keys, no-comment keys, root login)
  • Sensitive file permissions (world-writable /etc/passwd, etc.)
  • ClamAV signature freshness
  • openclaw security audit (if available)

Output: Posture score (0-100) + findings. Score deductions: critical (-25), high (-15), medium (-10), low (-5).

Agent Behavior Monitoring

Triggers: "check agent integrity", "monitor agent", "is the agent compromised"

bash scripts/monitor_agent.sh

What it checks:

  • Recent modifications to AGENTS.md, SOUL.md, MEMORY.md, TOOLS.md, USER.md
  • Memory file churn (>10 files modified = suspicious)
  • Unexpected cron jobs (anything not clawguard/freshclam/standard maintenance)
  • Suspicious outbound connections (IRC ports, backdoor ports, Tor)
  • Files created outside workspace (/tmp executables, home directory changes)
  • Suspicious processes (xmrig, nc -l, ncat, socat, chisel)
  • High CPU processes (>80% — potential miners)
  • Sensitive file exposure (.env files, world-readable SSH keys)

Output: Status (healthy / warnings_present / compromised_indicators) + findings.

Security Report Generation

Triggers: "security report", "threat report", "posture report"

bash scripts/generate_report.sh or bash scripts/generate_report.sh --days 30 --output report.md

Compiles all recent scan results into a markdown security posture report with:

  • Scan summary (total, clean, threats, errors)
  • Threat details with file paths and actions taken
  • Security posture score with emoji indicators
  • Recommendations (missing tools, scan schedules)

Automatic Scheduled Scanning

Cron jobs are defined in the Setup (First Run) section above. Create them immediately on first install using the OpenClaw cron tool.

To verify all crons are configured: bash scripts/check_crons.sh

False Positive Handling

ClamAV has moderate false positive rates. Strategy:

  1. Single ClamAV detection, known safe source → Likely false positive. Log and skip.
  2. ClamAV detection, unknown source → Quarantine and investigate.
  3. ClamAV detection + skill audit findings → Real threat. Quarantine immediately.

To handle a false positive:

Quarantine Procedures

Location: $CRUSTY_QUARANTINE (default: /tmp/crusty_quarantine) Manifest: manifest.json in quarantine directory tracks original paths and timestamps.

# View quarantined files
cat /tmp/crusty_quarantine/manifest.json | python3 -m json.tool

# Restore a false positive
mv /tmp/crusty_quarantine/<file> /original/path/

# Permanently delete
rm -rf /tmp/crusty_quarantine/*

Never use clamscan --remove. Always quarantine first, verify, then delete.

Offline Mode

Crusty Security works fully offline with reduced capability:

  • ✅ ClamAV scanning (local signatures)
  • ✅ Skill auditing (static analysis, no network needed)
  • ✅ Host auditing (local checks)
  • ✅ Agent monitoring (local checks)
  • ⚠️ ClamAV signatures may be stale (check freshness in host audit)

Resource-Constrained Environments (Raspberry Pi)

For hosts with <2GB RAM:

  • install_clamav.sh auto-detects low RAM and skips daemon mode
  • Use clamscan (on-demand) instead of clamd (daemon)
  • Use incremental scanning (--incremental) to reduce scan time
  • Skill auditing and agent monitoring have minimal resource requirements

For hosts with <1GB RAM:

  • Consider skipping ClamAV entirely
  • Use skill auditing + agent monitoring only
  • These tools are shell/Python with negligible memory usage

Environment Variables

VariableDefaultDescription
CRUSTY_API_KEY(none)Dashboard API key (cg_live_...)
CRUSTY_DASHBOARD_URLhttps://crustysecurity.comDashboard URL
CRUSTY_QUARANTINE/tmp/crusty_quarantineQuarantine directory
CRUSTY_LOG_DIR/tmp/crusty_logsScan log directory
CRUSTY_MAX_FILE_SIZE200MMax file size to scan
CRUSTY_WORKSPACEauto-detectedAgent workspace path

Backwards compat: CLAWGUARD_* env vars are still supported but deprecated. Use CRUSTY_* going forward.

Incident Response

When a real threat is confirmed, see references/remediation.md for the full checklist. Quick summary:

  1. Quarantine the file immediately
  2. Assess scope — was it executed? Did it modify other files?
  3. Check persistence — cron jobs, SSH keys, shell profiles, systemd services
  4. Check exfiltration — outbound connections, DNS queries, API key usage
  5. Rotate credentials if any were potentially exposed
  6. Full scanbash scripts/scan_file.sh -r /
  7. Document the incident

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Security

AI Boss Assistant

Transform any AI into a professional executive assistant with battle-tested personas and workflows. Complete templates for Google Workspace integration (Gmail, Calendar, Drive), milestone delivery system, and security guidelines.

Registry SourceRecently Updated
Security

On-Chain Skill Audit

On-chain skill provenance registry. Check, register, audit, and vouch for agent skills on Solana. Use when evaluating skill safety, registering new skills, or looking up provenance before installation.

Registry SourceRecently Updated
01K
Profile unavailable
Security

Solidity LSP

Solidity language server providing smart contract development support including compilation, linting, security analysis, and code intelligence for .sol files. Use when working with Ethereum smart contracts, Substrate pallets, or any Solidity code that needs compilation, security checks, gas optimization, or code navigation. Essential for ClawChain pallet development.

Registry SourceRecently Updated
0848
Profile unavailable