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% | 网络流量分析 |
你的防护清单:
- ✅ 只安装有 ClawHavoc 扫描标记的 Skills
- ✅ 定期运行
openclaw skills audit - ✅ 使用沙箱环境测试新 Skills
- ✅ 检查 Skills 的网络请求权限
- ✅ 敏感操作使用审批流程
安全扫描工具
一键安全扫描
# 扫描已安装的 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 | ☐ |