169 lines
6.2 KiB
Markdown
169 lines
6.2 KiB
Markdown
|
|
# Clawdbot Security Check
|
|||
|
|
|
|||
|
|
🔒 **Self-security audit framework for Clawdbot**
|
|||
|
|
|
|||
|
|
Inspired by the security hardening framework from [ᴅᴀɴɪᴇʟ ᴍɪᴇssʟᴇʀ](https://x.com/DanielMiessler) and integrated with [official ClawdBot security documentation](https://docs.clawd.bot/gateway/security).
|
|||
|
|
|
|||
|
|
This skill teaches Clawdbot to audit its own security posture using first-principles reasoning. Not a hard-coded script—it's a **knowledge framework** that Clawdbot applies dynamically to detect vulnerabilities, understand their impact, and recommend specific remediations.
|
|||
|
|
|
|||
|
|
## What This Is
|
|||
|
|
|
|||
|
|
- 🧠 **Knowledge-based** - Embeds the security framework directly in Clawdbot
|
|||
|
|
- 🔍 **Dynamic detection** - Clawdbot learns to find issues, not just run a script
|
|||
|
|
- 📚 **Extensible** - Add new checks by updating the skill
|
|||
|
|
- 🔒 **100% Read-only** - Only audits; never modifies configuration
|
|||
|
|
|
|||
|
|
## The 12 Security Domains
|
|||
|
|
|
|||
|
|
| # | Domain | Severity | Key Question |
|
|||
|
|
|---|--------|----------|--------------|
|
|||
|
|
| 1 | Gateway Exposure | 🔴 Critical | Is the gateway bound to 0.0.0.0 without auth? |
|
|||
|
|
| 2 | DM Policy | 🟠 High | Are DMs restricted to an allowlist? |
|
|||
|
|
| 3 | Group Access Control | 🟠 High | Are group policies set to allowlist? |
|
|||
|
|
| 4 | Credentials Security | 🔴 Critical | Are secrets in plaintext with loose permissions? |
|
|||
|
|
| 5 | Browser Control Exposure | 🟠 High | Is remote browser control secured? |
|
|||
|
|
| 6 | Gateway Bind & Network | 🟠 High | Is network exposure intentional and controlled? |
|
|||
|
|
| 7 | Tool Access & Elevated | 🟡 Medium | Are tools restricted to minimum needed? |
|
|||
|
|
| 8 | File Permissions & Disk | 🟡 Medium | Are file permissions properly set? |
|
|||
|
|
| 9 | Plugin Trust & Model | 🟡 Medium | Are plugins allowlisted and models current? |
|
|||
|
|
| 10| Logging & Redaction | 🟡 Medium | Is sensitive data redacted in logs? |
|
|||
|
|
| 11| Prompt Injection | 🟡 Medium | Is untrusted content wrapped? |
|
|||
|
|
| 12| Dangerous Commands | 🟡 Medium | Are destructive commands blocked? |
|
|||
|
|
|
|||
|
|
## Installation
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Via ClawdHub
|
|||
|
|
clawdhub install clawdbot-security-check
|
|||
|
|
|
|||
|
|
# Or clone for manual installation
|
|||
|
|
git clone https://github.com/TheSethRose/Clawdbot-Security-Check.git
|
|||
|
|
cp -r Clawdbot-Security-Check ~/.clawdbot/skills/
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Usage
|
|||
|
|
|
|||
|
|
### Via Clawdbot
|
|||
|
|
```
|
|||
|
|
@clawdbot audit my security
|
|||
|
|
@clawdbot run security check
|
|||
|
|
@clawdbot what vulnerabilities do I have?
|
|||
|
|
@clawdbot security audit --deep
|
|||
|
|
@clawdbot security audit --fix
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Security Principles
|
|||
|
|
|
|||
|
|
Running an AI agent with shell access requires caution. Focus on:
|
|||
|
|
|
|||
|
|
1. **Who can talk to the bot** — DM policies, group allowlists, channel restrictions
|
|||
|
|
2. **Where the bot is allowed to act** — Network exposure, gateway binding, proxy configs
|
|||
|
|
3. **What the bot can touch** — Tool access, file permissions, credential storage
|
|||
|
|
|
|||
|
|
## Audit Functions
|
|||
|
|
|
|||
|
|
The `--fix` flag applies these guardrails:
|
|||
|
|
- Changes `groupPolicy` from `open` to `allowlist` for common channels
|
|||
|
|
- Resets `logging.redactSensitive` from `off` to `tools`
|
|||
|
|
- Tightens permissions: `.clawdbot` to `700`, configs to `600`
|
|||
|
|
- Secures state files including credentials and auth profiles
|
|||
|
|
|
|||
|
|
## High-Level Checklist
|
|||
|
|
|
|||
|
|
Treat findings in this priority order:
|
|||
|
|
|
|||
|
|
1. 🔴 Lock down DMs and groups if tools are enabled on open settings
|
|||
|
|
2. 🔴 Fix public network exposure immediately
|
|||
|
|
3. 🟠 Secure browser control with tokens and HTTPS
|
|||
|
|
4. 🟠 Correct file permissions for credentials and config
|
|||
|
|
5. 🟡 Only load trusted plugins
|
|||
|
|
6. 🟡 Use modern models for bots with tool access
|
|||
|
|
|
|||
|
|
## Extending the Framework
|
|||
|
|
|
|||
|
|
Add new checks by contributing to SKILL.md:
|
|||
|
|
|
|||
|
|
```markdown
|
|||
|
|
## 13. New Vulnerability 🟡 Medium
|
|||
|
|
|
|||
|
|
**What to check:** What config reveals this?
|
|||
|
|
|
|||
|
|
**Detection:**
|
|||
|
|
```bash
|
|||
|
|
command-to-check-config
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**Vulnerability:** What can go wrong?
|
|||
|
|
|
|||
|
|
**Remediation:**
|
|||
|
|
```json
|
|||
|
|
{ "fix": "here" }
|
|||
|
|
```
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Architecture
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
Clawdbot-Security-Check/
|
|||
|
|
├── SKILL.md # Knowledge framework (the skill - source of truth)
|
|||
|
|
├── skill.json # Clawdbot metadata
|
|||
|
|
├── README.md # This file
|
|||
|
|
└── .gitignore
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**SKILL.md** is the source of truth—it teaches Clawdbot everything it needs to know.
|
|||
|
|
|
|||
|
|
## Why This Approach?
|
|||
|
|
|
|||
|
|
Hard-coded scripts get stale. A knowledge framework evolves:
|
|||
|
|
|
|||
|
|
- ✅ Add new vulnerabilities without code changes
|
|||
|
|
- ✅ Customize checks for your environment
|
|||
|
|
- ✅ Clawdbot understands the "why" behind each check
|
|||
|
|
- ✅ Enables intelligent follow-up questions
|
|||
|
|
|
|||
|
|
> "The goal isn't to find vulnerabilities—it's to understand security deeply enough that vulnerabilities can't hide." — Daniel Miessler
|
|||
|
|
|
|||
|
|
## Output Example
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
═══════════════════════════════════════════════════════════════
|
|||
|
|
🔒 CLAWDBOT SECURITY AUDIT
|
|||
|
|
═══════════════════════════════════════════════════════════════
|
|||
|
|
Timestamp: 2026-01-26T15:30:00.000Z
|
|||
|
|
|
|||
|
|
┌─ SUMMARY ───────────────────────────────────────────────
|
|||
|
|
│ 🔴 Critical: 1
|
|||
|
|
│ 🟠 High: 2
|
|||
|
|
│ 🟡 Medium: 1
|
|||
|
|
│ ✅ Passed: 8
|
|||
|
|
└────────────────────────────────────────────────────────
|
|||
|
|
|
|||
|
|
┌─ FINDINGS ──────────────────────────────────────────────
|
|||
|
|
│ 🔴 [CRITICAL] Gateway Exposure
|
|||
|
|
│ Finding: Gateway bound to 0.0.0.0:18789 without auth
|
|||
|
|
│ → Fix: Set gateway.auth_token environment variable
|
|||
|
|
│
|
|||
|
|
│ 🟠 [HIGH] DM Policy
|
|||
|
|
│ Finding: dm_policy is "allow" (all users)
|
|||
|
|
│ → Fix: Set dm_policy to "allowlist" with trusted users
|
|||
|
|
└────────────────────────────────────────────────────────
|
|||
|
|
|
|||
|
|
This audit was performed by Clawdbot's self-security framework.
|
|||
|
|
No changes were made to your configuration.
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Contributing
|
|||
|
|
|
|||
|
|
1. Fork the repo
|
|||
|
|
2. Add new security knowledge to SKILL.md
|
|||
|
|
3. Submit PR
|
|||
|
|
|
|||
|
|
## License
|
|||
|
|
|
|||
|
|
MIT - Security-first, open source forever.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
**Clawdbot knows its attack surface. Do you?**
|