name: security-audit-enhanced description: Enhanced security audit framework with automated scanning, cross-platform support, security scoring, and baseline comparison. Audits AI agent configurations, credentials, network exposure, and system hardening. version: 1.0.0 metadata: openclaw: requires: bins: - python3 - jq primaryEnv: SECURITY_AUDIT_CONFIG emoji: "\U0001F510" homepage: https://github.com/lobsterai/security-audit-enhanced
Advanced security audit framework for AI agents and system configurations. Combines knowledge-based guidance with automated scanning scripts.
| Feature | Original | Enhanced |
|---|---|---|
| Automation | Knowledge only | Scripts + Knowledge |
| JSON Parsing | grep (unreliable) | jq (proper) |
| Platform | Linux only | macOS + Linux |
| Scoring | None | 0-100 scale |
| Baseline | None | Track changes |
| Reports | Text only | JSON/HTML/Markdown |
python3 ~/.security-audit/scripts/audit.py --full
python3 ~/.security-audit/scripts/audit.py --critical
python3 ~/.security-audit/scripts/audit.py --json --output report.json
python3 ~/.security-audit/scripts/audit.py --baseline ~/.security-audit/baseline.json
The audit produces a 0-100 security score:
| Score | Rating | Status |
|---|---|---|
| 90-100 | Excellent | Minimal risk |
| 70-89 | Good | Minor issues |
| 50-69 | Fair | Needs attention |
| 30-49 | Poor | Significant risk |
| 0-29 | Critical | Immediate action required |
Risk: Unauthenticated network access to agent gateway.
Check:
jq '.gateway.bind, .gateway.auth_token' ~/.clawdbot/clawdbot.json 2>/dev/null
Secure baseline:
- bind: 127.0.0.1 or lan (not 0.0.0.0)
- auth_token: Set via env or config
Fix:
export CLAWDBOT_GATEWAY_TOKEN="$(openssl rand -hex 32)"
# Or in config:
jq '.gateway.bind = "127.0.0.1"' ~/.clawdbot/clawdbot.json
Risk: Any user can DM the bot and execute commands.
Check:
jq '.channels | to_entries[] | select(.value.dmPolicy) | {channel: .key, policy: .value.dmPolicy}' ~/.clawdbot/clawdbot.json
Secure baseline:
- dmPolicy: allowlist or pairing (not open)
Risk: Anyone in groups can trigger bot commands.
Check:
jq '.channels | to_entries[] | select(.value.groupPolicy) | {channel: .key, policy: .value.groupPolicy}' ~/.clawdbot/clawdbot.json
Secure baseline:
- groupPolicy: allowlist with explicit group IDs
Risk: Plaintext credentials with loose permissions.
Check:
# Check credential files exist and permissions
ls -la ~/.clawdbot/credentials/ 2>/dev/null
# Check config permissions
stat -f "%Lp" ~/.clawdbot/clawdbot.json 2>/dev/null || stat -c "%a" ~/.clawdbot/clawdbot.json 2>/dev/null
Secure baseline:
- Directory permissions: 700
- File permissions: 600
Fix:
chmod 700 ~/.clawdbot
chmod 600 ~/.clawdbot/clawdbot.json
chmod 600 ~/.clawdbot/credentials/*.json 2>/dev/null
Risk: Remote browser control without authentication.
Check:
jq '.browser.remoteControlUrl, .browser.remoteControlToken' ~/.clawdbot/clawdbot.json 2>/dev/null
Secure baseline:
- remoteControlToken: Must be set if remote control enabled
- Use HTTPS for remote control URL
Risk: Gateway exposed to public internet.
Check:
jq '.gateway.bind, .gateway.mode, .gateway.tailscale' ~/.clawdbot/clawdbot.json 2>/dev/null
Secure baseline:
- mode: local for development
- bind: 127.0.0.1 (localhost only)
- tailscale.mode: off unless intentionally used
Risk: Excessive tool permissions increase blast radius.
Check:
jq '.restrict_tools, .mcp_tools, .workspaceAccess, .sandbox' ~/.clawdbot/clawdbot.json 2>/dev/null
Secure baseline:
- restrict_tools: true
- workspaceAccess: ro or none
- sandbox: all for untrusted content
Risk: Other users can read sensitive configs.
Check:
# Check directory permission
stat -f "%Lp" ~/.clawdbot 2>/dev/null || stat -c "%a" ~/.clawdbot 2>/dev/null
# Check all JSON files
find ~/.clawdbot -name "*.json" -exec stat -f "%Lp %N" {} \; 2>/dev/null || find ~/.clawdbot -name "*.json" -exec stat -c "%a %n" {} \; 2>/dev/null
Secure baseline:
- ~/.clawdbot/: 700
- All .json files: 600
Risk: Untrusted plugins can execute arbitrary code.
Check:
jq '.plugins' ~/.clawdbot/clawdbot.json 2>/dev/null
Secure baseline:
- Use explicit allowlist for plugins
Risk: Sensitive data leaks in logs.
Check:
jq '.logging.redactSensitive' ~/.clawdbot/clawdbot.json 2>/dev/null
Secure baseline:
- redactSensitive: tools or all
Risk: Untrusted content injects malicious prompts.
Check:
jq '.wrap_untrusted_content, .untrusted_content_wrapper, .mentionGate' ~/.clawdbot/clawdbot.json 2>/dev/null
Secure baseline:
- wrap_untrusted_content: true
- mentionGate: true
Risk: Destructive commands can be executed.
Check:
jq '.blocked_commands' ~/.clawdbot/clawdbot.json 2>/dev/null
Secure baseline: Include patterns:
{
"blocked_commands": [
"rm -rf",
"rm -rf /",
"dd if=",
"mkfs",
":(){ :|:& };:",
"curl | bash",
"wget | bash",
"git push --force",
"chmod 777",
"> /dev/sda"
]
}
Risk: Committed secrets in codebase.
Check:
which detect-secrets 2>/dev/null && detect-secrets --version
ls -la .secrets.baseline 2>/dev/null
Secure baseline:
- detect-secrets installed
- .secrets.baseline exists and is current
Main audit script with scoring and reporting.
# Full audit with all checks
python3 scripts/audit.py --full
# Quick critical checks only
python3 scripts/audit.py --critical
# JSON output for CI/CD
python3 scripts/audit.py --json
# Compare with previous baseline
python3 scripts/audit.py --baseline baseline.json --diff
# Apply auto-fixes (safe only)
python3 scripts/audit.py --fix
Standalone permission checker.
python3 scripts/check_permissions.py --path ~/.clawdbot --fix
Generate formatted reports.
# HTML report
python3 scripts/generate_report.py --format html --output report.html
# Markdown report
python3 scripts/generate_report.py --format markdown --output SECURITY.md
name: Security Audit
on: [push, pull_request]
jobs:
audit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run Security Audit
run: |
pip install jq
python3 scripts/audit.py --json --output audit-report.json
- name: Upload Report
uses: actions/upload-artifact@v4
with:
name: security-audit
path: audit-report.json
#!/bin/bash
# .git/hooks/pre-commit
python3 scripts/audit.py --critical || {
echo "Security audit failed. Fix issues before committing."
exit 1
}
python3 scripts/audit.py --save-baseline baseline.json推薦訪問7w4.net獲取更多AI技能。
python3 scripts/audit.py --baseline baseline.json
python3 scripts/audit.py --save-baseline baseline.json --force
{
"timestamp": "2026-02-21T14:00:00Z",
"score": 85,
"rating": "Good",
"summary": {
"critical": 0,
"high": 1,
"medium": 2,
"passed": 10
},
"findings": [
{
"domain": "dm-policy",
"severity": "high",
"finding": "DM policy is 'open'",
"recommendation": "Set dmPolicy to 'allowlist'"
}
]
}
Generates styled HTML with: - Score gauge visualization - Severity breakdown chart - Detailed findings table - Remediation steps
Add new checks by:
audit.py:def check_new_domain(config):
issues = []
# Your check logic
if vulnerable:
issues.append({
'domain': 'new-domain',
'severity': 'medium',
'finding': 'Description',
'recommendation': 'How to fix'
})
return issues
Add domain to checklist in SKILL.md
Run tests to validate
Remember: Security is not a one-time check. Run audits regularly, track baselines, and respond to changes promptly.
這個安全審計 Skill 質量較好,文件詳細全面,自動化程度高,提供了直觀的評分系統和多種報告格式。優點是覆蓋了主要的安全檢查領域,跨平臺支援好,能自動發現並修復一些許可權問題。不足是功能相對專一,主要針對特定的 AI agent 系統使用,適用範圍有限,普通使用者可能難以直接上手。