🎬 安全不是选择,是底线
凌晨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/"]
}
}
🌟 总结
安全不是一次性的审计,而是持续的过程。就像王家卫电影里的"阿飞正传"——一分钟的朋友,一辈子的朋友。安全也是一个承诺。
记住三个核心原则:
- 最小权限:只给 Agent 完成任务所需的最少权限
- 默认拒绝:默认拒绝所有操作,只允许显式授权的
- 深度防御:多层防护(沙箱 + 审计 + 监控 + 告警)
参考我们的 竞品安全分析报告 了解更多行业安全趋势。