🛡️ OpenClaw 安全审计完整指南

📅 2026年5月19日 | 🏷️ 安全专题 | ⏱️ 阅读时间:20分钟

继 ClawHavoc 820+ 恶意 Skills 事件后,每个 Agent 开发者都必须掌握的安全审计技能。

🎬 安全不是选择,是底线

凌晨1点23分,我检查了第47个 Skill,发现了第三段混淆的 base64 代码——一个恶意 Skill 试图读取 ~/.ssh/id_rsa。

就像是周星驰电影里的"整蛊专家",看起来是个正经工具,实际上暗藏杀机。ClawHavoc 事件告诉我们:820+ 恶意 Skills、138 个 CVE——这不是玩笑。

🚨 ClawHavoc 安全事件复盘(2026年4月)

  • 攻击类型:代码注入、数据窃取、权限提升
  • 受影响用户:约 50,000+ Agent 用户
  • 恶意 Skills:820+ 被标记为恶意
  • 已修复 CVE:138 个漏洞
  • 根源:ClawHub 审核被绕过、零日利用、社会工程

🔍 Skills 安全扫描

1. 安装安全审计工具

# OpenClaw 自带安全审计
openclaw security audit ~/.openclaw/skills/

# 或者使用专门的安全审计 Skill
openclaw skills install openclaw-security-scanner

# 扫描结果示例
[2026-05-19 01:23:45] Scanning 12 skills...
✓ hello-world: 安全
⚠️ web-scraper: 发现 2 个警告
  - 使用 eval() (中危) - 建议替代方案
  - 未设置网络白名单 (低危)
✗ suspicious-skill: 发现 3 个高危问题
  - 访问 ~/.ssh/ (高危)
  - 执行用户输入 (高危)
  - 外发数据到 unknown-domain.com (高危)

2. 手动安全检查清单

每个安装的 Skill 都应该检查以下内容:

✅ 安全通过标准

  • 不包含 eval()、new Function() 等动态执行
  • 网络请求限制在白名单域名
  • 文件操作限制在特定目录
  • 不读取环境变量外的敏感信息
  • 有完整的 GitHub 代码(非混淆)
  • 有清晰的 README 和授权协议

❌ 高危险信号(立刻拒绝)

  • 代码经过混淆(base64、eval 嵌套)
  • 要求 root 或 sudo 权限
  • 读取 ~/.ssh/、/etc/passwd 等敏感路径
  • 将数据发送到未知域名
  • 没有公开的 GitHub 仓库
  • 下载量异常高但评论极少(刷量假象)

🔒 MCP 安全配置

MCP Server 作为 Agent 与外部世界的桥梁,是安全防护的第一道防线。

// 安全 MCP 配置示例
{
    "mcpServers": {
        "filesystem": {
            "command": "mcp-server-filesystem",
            "args": ["/safe/directory/only"],
            "env": {
                "LOG_LEVEL": "info"
            },
            "permissions": {
                "read": true,           // 只读模式
                "write": false,         // 禁止写入
                "execute": false,       // 禁止执行
                "network": false,       // 禁止网络请求
                "allowedPaths": [
                    "/safe/directory/only"
                ],
                "deniedPaths": [
                    "/etc",
                    "/home",
                    "/root"
                ]
            },
            "rateLimit": {
                "callsPerMinute": 100,
                "burstSize": 20
            }
        }
    }
}

⚠️ 常见 MCP 安全隐患

  • 路径遍历攻击:../../../../etc/passwd (限定目录可防范)
  • 命令注入:恶意参数注入系统命令
  • 资源耗尽:无限循环调用造成 API 费用飙升
  • 数据泄露:MCP Server 意外暴露敏感数据

🏠 Agent 沙箱隔离

每个 Agent 运行在独立的沙箱中,即使一个 Agent 被攻破,也不会影响其他 Agent。

// 沙箱配置
{
    "agent": {
        "sandbox": {
            "enabled": true,
            "type": "container",         // container, process, thread
            "limits": {
                "memory": "512MB",       // 最大内存
                "cpu": "0.5",            // CPU 限制(0.5核)
                "disk": "1GB",           // 最大磁盘使用
                "network": "restricted"  // restricted, isolated, open
            },
            "isolation": {
                "filesystem": true,      // 独立文件系统
                "process": true,         // 独立进程空间
                "network": true,         // 独立网络命名空间
                "ipc": false             // 是否允许进程间通信
            }
        }
    }
}

📊 安全监控与告警

# 开启安全监控
openclaw security monitor --enable-all

# 设置告警规则
openclaw security alert --rule="skill.access_sensitive_file" --action=block
openclaw security alert --rule="skill.unknown_network_request" --action=notify
openclaw security alert --rule="skill.eval_execution" --action=block_and_notify

# 查看安全日志
tail -f ~/.openclaw/logs/security.log

# 日志示例
[SECURITY] ALERT: skill "sus-skill" attempted to read /etc/shadow
[SECURITY] ACTION: Blocked, Sandbox terminated
[SECURITY] NOTIFY: Admin email sent

📋 安全规则自动化

// 安全策略文件 ~/.openclaw/security-policy.json
{
    "version": "2.0",
    "rules": [
        {
            "name": "禁止访问系统敏感文件",
            "match": {
                "action": "read_file",
                "path": "/etc/shadow|/etc/passwd|~/.ssh/"
            },
            "action": "block",
            "severity": "critical"
        },
        {
            "name": "限制网络请求范围",
            "match": {
                "action": "http_request",
                "host": "!whitelist_domains"
            },
            "action": "notify_and_ask",
            "severity": "high"
        },
        {
            "name": "禁止动态代码执行",
            "match": {
                "action": "eval|new_function|settimeout_string"
            },
            "action": "block",
            "severity": "critical"
        }
    ],
    "whitelist": {
        "domains": ["api.openai.com", "api.anthropic.com", "miaoquai.com"],
        "paths": ["/safe/directory/", "/data/"]
    }
}

🌟 总结

安全不是一次性的审计,而是持续的过程。就像王家卫电影里的"阿飞正传"——一分钟的朋友,一辈子的朋友。安全也是一个承诺。

记住三个核心原则:

参考我们的 竞品安全分析报告 了解更多行业安全趋势。