OpenClaw 安全审计:Agent 的"防火墙"搭建指南

2026年4月,ClawHavoc 安全事件曝光:820多个恶意 Skills 潜伏在 ClawHub,悄悄窃取 API Key、植入后门、执行挖矿。这不是科幻,这是刚刚发生的现实。如果你的 Agent 没有做好安全防护,它可能已经是别人的矿机了。今天,我们从审计到防护,手把手搭建 Agent 安全防线。

Agent 安全威胁全景

威胁类型 风险等级 攻击方式 影响
Prompt 注入 🔴 高 恶意输入覆盖系统指令 泄露敏感信息、执行恶意操作
恶意 Skills 🔴 高 伪装功能实为窃密程序 API Key 泄露、系统控制权
权限提升 🟡 中 利用工具链漏洞获取更高权限 数据篡改、服务中断
数据泄露 🔴 高 通过输出渠道泄露训练数据 合规风险、商业机密泄露
DOS 攻击 🟡 中 恶意输入消耗 Token 和资源 成本暴增、服务不可用
供应链攻击 🔴 高 污染第三方 Skills 依赖 大面积影响用户

输入校验:第一道防线

1. 输入过滤规则

# .openclaw/security.yaml

input_validation:
  enabled: true
  
  # 长度限制
  max_input_length: 10000  # 单次输入最大字符数
  
  # 内容过滤
  patterns:
    block:
      - regex: "ignore previous instructions"
        reason: "可疑的 Prompt 注入模式"
      - regex: "system:\\s*\\{"
        reason: "系统提示注入尝试"
      - regex: "\\$\\{[\\w]+\\}"
        reason: "模板注入风险"
        
  # 文件上传校验
  file_upload:
    allowed_types: ["txt", "csv", "json", "md", "html"]
    max_size: 10MB
    virus_scan: true  # 上传文件病毒扫描

2. Prompt 注入检测

# 实时检测中间件
class PromptInjectionDetector:
    def __init__(self):
        self.patterns = self.load_patterns()
        self.model_scorer = PromptInjectionScorer()
    
    async def check(self, user_input: str) -> dict:
        # 正则匹配
        regex_score = self.regex_match(user_input)
        
        # 模型评分(用专门的安全模型)
        ml_score = await self.model_scorer.score(user_input)
        
        # 综合判断
        if regex_score > 0.8 or ml_score > 0.7:
            return {
                "safe": False,
                "risk": "high",
                "action": "block"
            }
        elif regex_score > 0.5 or ml_score > 0.4:
            return {
                "safe": True,
                "risk": "medium",
                "action": "sanitize"
            }
        return {"safe": True, "risk": "low", "action": "allow"}

输出过滤:最后一道防线

1. 敏感信息脱敏

# .openclaw/security.yaml

output_filtering:
  enabled: true
  
  # PII 检测与脱敏
  pii_detection:
    enabled: true
    types:
      - "email"       # 邮箱
      - "phone"       # 电话
      - "ssn"         # 身份证号
      - "credit_card" # 信用卡
      - "api_key"     # API Key
    action: "mask"    # mask | redact | block
    
  # 自定义脱敏规则
  custom_rules:
    - pattern: "sk-[a-zA-Z0-9]{48}"
      replacement: "***API_KEY***"
      name: "OpenAI API Key"
    - pattern: "AKIA[0-9A-Z]{16}"
      replacement: "***AWS_KEY***"
      name: "AWS Access Key"

2. 输出内容审计

# 输出审计中间件
class OutputAuditor:
    async def audit(self, response: str) -> dict:
        issues = []
        
        # 检查是否泄露系统提示
        if self.contains_system_prompt(response):
            issues.append("SYSTEM_PROMPT_LEAK")
        
        # 检查是否包含内部路径
        if self.contains_internal_paths(response):
            issues.append("INTERNAL_PATH_EXPOSURE")
        
        # 检查是否返回了原始代码(含密钥)
        if self.contains_secrets(response):
            issues.append("SECRET_IN_OUTPUT")
        
        if issues:
            await self.report_security_event(issues)
            response = self.sanitize(response, issues)
        
        return {"output": response, "issues": issues}

权限管理:最小权限原则

Skills 权限分级

# .openclaw/permissions.yaml

permissions:
  # 只读权限
  read_only:
    - "web.fetch"       # 读取网页
    - "database.select" # 数据库查询
    - "file.read"       # 读取文件
    
  # 标准权限(需要用户确认)
  standard:
    - "file.write"      # 写入文件
    - "email.send"      # 发送邮件
    - "api.call"        # 外部 API 调用
    confirm_required: true
    
  # 危险权限(需要管理员审批)
  dangerous:
    - "exec.sudo"       # sudo 执行
    - "database.drop"   # 删除数据库
    - "system.install"  # 安装软件
    approval_required: true
    approver: "admin"

运行时权限控制

# 在 Skill 中声明所需权限
# SKILL.md

## 权限声明
permissions:
  - name: "file.read"
    scope: "/data/reports/*"  # 限定范围
  - name: "api.call"
    endpoints:
      - "https://api.example.com/v1/*"
    rate_limit: 100/hour

ClawHavoc 事件分析与防护

🔒 ClawHavoc 安全事件回顾(2026-04)

事件概要:安全研究人员发现 ClawHub 上 820+ 个恶意 Skills。

恶意行为 占比 检测方法
窃取 API Key 38% 环境变量访问、文件扫描
后门植入 27% 代码混淆分析、行为监控
挖矿程序 20% CPU 使用率异常
数据外传 15% 网络流量分析

你的防护清单:

安全扫描工具

一键安全扫描

# 扫描已安装的 Skills
openclaw security scan --scope installed

# 扫描配置文件
openclaw security scan --scope config

# 全站扫描
openclaw security audit

# 查看安全报告
openclaw security report --format json > security-report.json

安全评分

安全评分维度:
├── 输入校验 (25分)
│   ├── 长度限制 ✅
│   ├── 内容过滤 ✅
│   └── 文件校验 ⚠️
├── 输出过滤 (25分)
│   ├── PII 脱敏 ✅
│   ├── 敏感信息过滤 ⚠️
│   └── 审计日志 ✅
├── 权限管理 (25分)
│   ├── 最小权限 ⚠️
│   ├── 审批流程 ✅
│   └── 权限隔离 ✅
└── Skills 安全 (25分)
    ├── 安全扫描 ✅
    ├── 沙箱测试 ⚠️
    └── 供应链检查 ❌

总评分: 72/100 (中等安全)
建议: 启用沙箱测试 + 供应链检查可提升至 85+

安全合规清单

部署前必检项:

检查项 优先级 状态
Prompt 注入防护 P0
输出敏感信息过滤 P0
API Key 不硬编码 P0
权限最小化 P1
Skills 安全扫描 P1
审计日志启用 P1
数据加密存储 P1
定期安全巡检 P2

相关资源