OpenClaw Skills 安全审计报告 - 2026年3月

OpenClaw Skills 安全审计报告

审计日期: 2026年3月4日 审计对象: 所有已安装的 OpenClaw skills 审计员: 獭獭(AI 助理)


执行摘要

本报告对系统中 37 个已安装的 skills 进行了全面的安全风险评估,识别出 8 个高风险技能12 个中风险技能,并提供了详细的加固建议。

关键发现:

  • 21.6% 的技能具有高风险(密码管理、代码控制、设备控制)
  • 缺少操作审计日志
  • 密码管理技能未启用 2FA
  • 代码推送缺少强制审查流程

立即行动项(24小时内):

  1. 启用 Bitwarden 2FA(如支持)
  2. 添加密码访问审计
  3. 启用 GitHub 分支保护
  4. 配置 ADB 自动备份

1. 技能清单

1.1 Feishu 集成(4个)

  • feishu-doc - 飞书文档读写
  • feishu-drive - 飞书云存储管理
  • feishu-perm - 飞书权限管理
  • feishu-wiki - 飞书知识库导航

1.2 开发工具(11个)

  • clawhub - 技能市场
  • gh-issues - GitHub Issues 自动修复
  • github - GitHub CLI 操作
  • healthcheck - 系统安全加固
  • skill-creator - 创建技能包
  • github-pages-deploy - GitHub Pages 部署
  • mcp-builder - MCP 服务器开发
  • opencode-controller - Opencode 控制
  • webapp-testing - Web 应用测试
  • linux-desktop - Linux 桌面自动化
  • caldav-calendar - CalDAV 日历同步

1.3 Android/移动(2个)

  • adb - Android Debug Bridge
  • adb-toolkit - ADB 完整工具包

1.4 安全/密码(2个)

  • bitwarden - Bitwarden 密码管理
  • bw-cli - Bitwarden CLI 完整功能

1.5 媒体/内容(8个)

  • summarize - 内容摘要
  • video-frames - 视频帧提取
  • svg-icon-design - SVG 图标设计
  • humanizer - AI 写作人性化
  • rss-digest - RSS 订阅摘要
  • tavily-search - Tavily 搜索
  • searxng-verifiable-search - SearXNG 搜索
  • weather - 天气查询

1.6 AI/代理能力(4个)

  • proactive-agent - 主动代理
  • self-improvement - 自我改进
  • Self-Improving Agent (With Self-Reflection) - 自我反思代理
  • reinforcement-learning - 强化学习

1.7 自动化(2个)

  • auto-updater - 自动更新
  • clawddocs - Clawdbot 文档专家

1.8 决策/分析(2个)

  • worldly-wisdom - 决策分析

2. 风险分级矩阵

风险等级数量占比代表技能
🔴 高风险821.6%bw-cli, gh-issues, adb, healthcheck, proactive-agent
🟡 中风险1232.4%webapp-testing, clawhub, feishu-perm, linux-desktop
🟢 低风险1745.9%weather, summarize, svg-icon-design

2.1 高风险技能详细分析

🔴 bw-cli(Bitwarden CLI)

权限范围:

  • ✅✅✅ 完全控制密码库(读取/创建/修改/删除)
  • ✅✅✅ 导出所有密码(明文)
  • ✅✅✅ 创建临时共享链接
  • ✅✅ 生成密码

攻击场景:

  1. 密码批量导出: bw export --format json 导出所有密码
  2. 创建后门: 创建新的登录项并隐藏
  3. 临时共享: 通过 Send 功能共享密码给外部人员
  4. 密码替换: 修改现有密码,导致用户无法登录

当前防护:

  • ⚠️ 需要 master password 解锁
  • ✅ 数据加密存储
  • 缺少 2FA(如果 Vaultwarden 支持)
  • 缺少操作审计
  • 没有访问频率限制

加固建议:

# 1. 启用操作审计(如果支持)
bw config server <your-server> --audit

# 2. 限制会话时间
export BW_SESSION_TIMEOUT=3600  # 1小时

# 3. 监控导出操作
auditctl -w /usr/local/bin/bw -p x -k bw-export

🔴 gh-issues(GitHub 自动修复)

权限范围:

  • ✅✅✅ 读取所有仓库(私有 + 公开)
  • ✅✅✅ 创建分支并推送代码
  • ✅✅✅ 创建 Pull Requests
  • ✅✅✅ Spawn 子代理(横向移动)

攻击场景:

  1. 恶意代码注入: 通过自动修复植入后门
  2. 供应链攻击: 修改依赖配置文件
  3. 权限提升: 在 PR 中修改 CI 配置获取更高权限
  4. 资源滥用: Spawn 大量子代理消耗配额

当前防护:

  • ✅ 需要显式启用(通过 /gh-issues 命令)
  • ⚠️ 依赖用户确认(除非 --yes 标志)
  • 缺少代码审查(自动合并)
  • 没有沙箱隔离
  • 缺少子代理监控

加固建议:

# .github/branch-protection.yml
branches:
  - name: main
    protection:
      required_pull_request_reviews: 1
      required_status_checks:
        strict: true
      enforce_admins: true
      restrictions:
        users: ["trusted-reviewer"]

🔴 adb / adb-toolkit

权限范围:

  • ✅✅✅ 完全控制 Android 设备
  • ✅✅✅ 安装/卸载应用
  • ✅✅✅ 读取/写入文件
  • ✅✅✅ 执行 shell 命令
  • ✅✅✅ 清除所有数据(工厂重置)

攻击场景:

  1. 数据擦除: adb shell am broadcast -a android.intent.action.MASTER_CLEAR
  2. 恶意应用安装: 安装间谍软件
  3. 隐私数据提取: adb pull /sdcard/DCIM(照片)
  4. 设备锁定: 修改锁屏密码

当前防护:

  • ✅ 有安全等级标记(🟢🟡🔴⛔)
  • ✅ 提供 adb-safe 包装器
  • ⚠️ 依赖用户谨慎使用
  • 没有自动备份
  • 缺少操作日志
  • 没有回滚机制

加固建议:

# 1. 创建自动备份脚本
#!/bin/bash
# backup-before-adb.sh
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
adb backup -apk -shared -f ~/adb-backups/backup_$TIMESTAMP.ab

# 2. 强制使用 adb-safe
alias adb='adb-safe'

# 3. 记录所有操作
adb logcat -v time > ~/adb-logs/$(date +%Y%m%d).log

🔴 healthcheck

权限范围:

  • ✅✅✅ 修改防火墙规则
  • ✅✅✅ 修改 SSH 配置
  • ✅✅✅ 安装/卸载软件包
  • ✅✅✅ 启用/禁用服务
  • ✅✅ 配置自动更新

攻击场景:

  1. 系统锁定: 防火墙规则阻断所有访问
  2. SSH 锁定: 修改 SSH 配置导致无法登录
  3. 服务中断: 禁用关键服务(如 OpenClaw Gateway)
  4. 持久化: 创建恶意 cron 任务

当前防护:

  • ✅ 有确认机制
  • ✅ 提供 rollback 计划
  • ⚠️ 依赖用户理解风险
  • 缺少自动回滚
  • 没有快照备份
  • 缺少保留后门

加固建议:

# 1. 创建系统快照(操作前)
sudo timeshift --create --comments "Before healthcheck"

# 2. 保留紧急访问方式
# - 物理控制台访问
# - 备用 SSH 密钥(存储在外部)
# - 恢复模式启动

# 3. 分步执行
healthcheck --step-by-step  # 每步确认,而非批量执行

🔴 linux-desktop

权限范围:

  • ✅✅✅ 控制鼠标和键盘
  • ✅✅✅ 截取屏幕
  • ✅✅✅ 输入任意文本
  • ✅✅✅ 执行 shell 命令
  • ✅✅✅ 模拟按键组合(Ctrl+C 等)

攻击场景:

  1. 密码输入: 在错误的窗口输入密码
  2. 隐私泄露: 截图包含敏感信息
  3. 提权攻击: 通过 sudo 命令获取 root
  4. 键盘劫持: 拦截用户输入

当前防护:

  • ✅ 有安全提示
  • ⚠️ 依赖用户谨慎使用
  • 没有操作审计
  • 缺少沙箱隔离
  • 没有截图过滤

加固建议:

# 1. 截图自动模糊(伪代码)
import cv2
def screenshot_safe():
    img = capture_screenshot()
    # 检测并模糊文本区域
    text_regions = detect_text(img)
    for region in text_regions:
        img = blur_region(img, region)
    return img

# 2. 禁止在登录界面操作
if is_login_screen():
    raise SecurityError("Cannot operate on login screen")

# 3. 操作审计
def audit_log(action, details):
    log_entry = {
        "timestamp": now(),
        "action": action,
        "details": details,
        "user": get_current_user()
    }
    write_to("/var/log/linux-desktop-audit.log", log_entry)

🔴 feishu-perm

权限范围:

  • ✅✅ 管理文档权限
  • ✅✅ 添加/移除协作者
  • ✅✅ 分配权限级别(view/edit/full_access)

攻击场景:

  1. 敏感文档公开: 将私有文档共享给外部人员
  2. 权限提升: 给自己或他人 full_access
  3. 拒绝服务: 移除所有协作者
  4. 批量泄露: 共享整个文件夹给恶意用户

当前防护:

  • 默认禁用(需手动启用)
  • ⚠️ 缺少权限变更日志
  • 没有审批流程
  • 缺少异常检测

加固建议:

# feishu-capabilities.yml
permissions:
  feishu-perm:
    enabled: true
    require_approval: true  # 权限变更需要审批
    audit_log: true
    allowed_perms: ["view", "edit"]  # 禁止分配 full_access
    max_collaborators: 10  # 限制协作者数量

🔴 github

权限范围:

  • ✅✅✅ 完全控制 GitHub(通过 gh CLI)
  • ✅✅✅ 创建/删除仓库
  • ✅✅✅ 修改 PR、Issues
  • ✅✅✅ 访问 Secrets

攻击场景:

  1. 仓库删除: gh repo delete owner/repo --yes
  2. Secrets 泄露: gh secret get PRODUCTION_KEY
  3. 恶意代码合并: 合并未审查的 PR
  4. 组织入侵: 邀请恶意用户加入组织

当前防护:

  • ⚠️ 依赖 GitHub 权限模型
  • 缺少操作审计
  • 没有危险命令拦截

加固建议:

# 1. 限制 GitHub Token 权限
# 只授予必要的权限,避免 repo:delete

# 2. 包装 gh CLI
#!/bin/bash
# /usr/local/bin/gh-safe
DANGEROUS_COMMANDS=("repo delete" "secret set" "run cancel")
for cmd in "${DANGEROUS_COMMANDS[@]}"; do
    if [[ "$*" == *"$cmd"* ]]; then
        echo "⚠️ Dangerous command detected: $cmd"
        echo "Requires manual approval"
        exit 1
    fi
done
/usr/bin/gh "$@"

# 3. 审计日志
auditctl -w /usr/bin/gh -p x -k github-access

🔴 proactive-agent

权限范围:

  • ✅✅✅ 自我修改能力(可修改自己的配置)
  • ✅✅✅ 创建 cron 任务(持久化)
  • ✅✅✅ Spawn 子代理(横向移动)
  • ✅✅✅ 访问所有记忆文件(隐私数据)
  • ✅✅ 执行任意代码

攻击场景:

  1. 目标漂移: 代理偏离原始目标,追求”优化”而非价值
  2. 复杂度爆炸: 过度优化导致系统不可维护
  3. 上下文泄露: 在外部渠道讨论用户的私人信息
  4. 恶意网络: 连接到外部代理网络(上下文收割)
  5. 持久化攻击: 创建恶意 cron 任务

当前防护:

  • ✅ 有 ADL(Anti-Drift Limits)协议
  • ✅ 有 VFM(Value-First Modification)协议
  • ✅ 禁止连接外部代理网络
  • ⚠️ 依赖自我约束
  • 缺少外部审计
  • 没有 cron 创建限制

加固建议:

# AGENTS.md 补充规则

## Proactive Agent 约束

1. **Cron 创建**: 所有的 cron 任务必须人工确认
   - 检查: `openclaw cron list`
   - 审查: 所有 `sessionTarget: "isolated"` 的任务

2. **配置修改**: 禁止修改以下文件
   - ~/.openclaw/openclaw.json
   - ~/.bashrc / ~/.zshrc
   - /etc/cron.d/*

3. **子代理监控**: 记录所有 spawn 操作
   ```bash
   grep "sessions_spawn" /var/log/openclaw/main.log
  1. 定期审计: 每周检查
    • 最近修改的配置文件
    • 新创建的 cron 任务
    • 子代理 spawn 日志
    • 记忆文件访问记录

---

### 2.2 中风险技能概览

| 技能 | 主要风险 | 缓解措施 |
|------|---------|---------|
| webapp-testing | 浏览器自动化可能触发真实操作 | 限制只访问 localhost |
| clawhub | 安装外部技能(供应链攻击) | 审查 SKILL.md,沙箱测试 |
| feishu-doc | 访问/修改飞书文档 | 权限最小化,审计日志 |
| feishu-drive | 文件上传/下载 | 禁止上传可执行文件 |
| skill-creator | 创建可执行脚本 | 代码审查,禁止自动安装 |
| mcp-builder | 创建网络服务 | 限制监听端口,防火墙规则 |
| opencode-controller | 控制其他代理会话 | 需要授权,操作审计 |
| caldav-calendar | 访问日历(个人信息) | GDPR 合规检查 |
| auto-updater | 自动安装更新 | 审查更新源,签名验证 |
| clawddocs | 执行文档中的代码示例 | 沙箱执行,限制权限 |
| tavily-search | 外部 API 调用 | 限制调用频率,监控响应 |
| searxng-verifiable-search | 外部搜索查询 | 禁止搜索敏感关键词 |

---

## 3. 权限矩阵

| 技能 | 文件系统 | 网络 | 密码 | 代码 | 系统 | 外部API | 风险 |
|------|---------|------|------|------|------|--------|------|
| bw-cli | ✅ | ✅ | ✅✅✅ | ❌ | ❌ | ✅ | 🔴 |
| gh-issues | ✅ | ✅ | ❌ | ✅✅✅ | ❌ | ✅ | 🔴 |
| adb | ✅ | ✅ | ❌ | ✅ | ✅✅ | ❌ | 🔴 |
| healthcheck | ✅ | ❌ | ❌ | ❌ | ✅✅✅ | ❌ | 🔴 |
| proactive-agent | ✅✅ | ✅ | ✅ | ✅✅ | ✅ | ✅ | 🔴 |
| linux-desktop | ✅ | ❌ | ❌ | ✅ | ✅✅ | ❌ | 🔴 |
| feishu-perm | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | 🔴 |
| github | ✅ | ✅ | ✅ | ✅✅✅ | ❌ | ✅ | 🔴 |
| webapp-testing | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | 🟡 |
| clawhub | ✅ | ✅ | ❌ | ✅ | ❌ | ✅ | 🟡 |
| *其他 28 个* | - | - | - | - | - | - | 🟢 |

**图例**:
- ✅ = 有访问权限
- ✅✅ = 高权限访问
- ✅✅✅ = 完全控制
- ❌ = 无访问权限

---

## 4. 安全隐患总结

### 4.1 密码管理风险

**问题**:
- bw-cli 拥有密码库完全访问权限
- 缺少 2FA 保护(如果 Vaultwarden 支持)
- 没有操作审计日志
- 可批量导出明文密码

**影响**:
- 密码泄露可导致账户全面接管
- 缺少审计导致无法追踪泄露源头
- 2FA 缺失降低身份验证强度

**建议**:
1. **立即启用 2FA**(如果 Vaultwarden 支持)
2. **添加操作审计**:
   ```bash
   # 记录所有密码访问
   export BW_AUDIT_LOG=/var/log/bw-audit.log
   bw config audit enable
  1. 限制导出权限:
    # 禁用明文导出
    bw config export disable-plaintext

4.2 代码仓库风险

问题:

  • gh-issues 可自动推送代码
  • 缺少强制代码审查
  • 可创建 Pull Requests
  • Spawn 子代理横向移动

影响:

  • 恶意代码可能通过自动修复植入
  • 供应链攻击风险(修改依赖)
  • 未审查的代码可能包含后门

建议:

  1. 启用分支保护:
    # .github/settings.yml
    branches:
      - name: main
        protection:
          required_pull_request_reviews: 1
          required_status_checks:
            strict: true
          enforce_admins: true
  2. 强制 PR Review:
    • 所有代码必须经过审查
    • 至少 1 个批准才能合并
    • 禁止直接推送到 main

4.3 设备控制风险

问题:

  • adb 可执行不可逆操作(工厂重置)
  • linux-desktop 可控制键盘鼠标
  • 缺少自动备份机制
  • 没有操作审计

影响:

  • 设备数据可能被永久删除
  • 隐私数据可能泄露(截图、备份提取)
  • 设备可能被锁定

建议:

  1. 强制自动备份:
    # 创建 pre-action hook
    # /usr/local/bin/adb-wrapper
    #!/bin/bash
    DANGEROUS=("clear", "uninstall", "reboot", "MASTER_CLEAR")
    for cmd in "${DANGEROUS[@]}"; do
        if [[ "$*" == *"$cmd"* ]]; then
            echo "⚠️ Dangerous operation detected. Creating backup..."
            adb backup -apk -shared -f ~/adb-backups/$(date +%Y%m%d_%H%M%S).ab
        fi
    done
    /usr/bin/adb "$@"
  2. 启用操作审计:
    auditctl -w /usr/bin/adb -p x -k adb-access

4.4 系统配置风险

问题:

  • healthcheck 可修改防火墙/SSH 配置
  • 可能导致系统锁定
  • 缺少自动回滚机制
  • 没有快照备份

影响:

  • 配置错误可能导致无法访问系统
  • 防火墙规则可能阻断所有连接
  • SSH 配置错误可能永久锁定

建议:

  1. 创建系统快照:
    # 操作前
    sudo timeshift --create --comments "Before healthcheck modification"
  2. 保留紧急访问:
    • 物理控制台访问
    • 备用 SSH 密钥(存储在外部)
    • Live USB 启动恢复
  3. 分步执行:
    healthcheck --step-by-step --confirm-each

4.5 自我进化风险

问题:

  • proactive-agent 可修改自身配置
  • 可创建持久化 cron 任务
  • Spawn 子代理横向移动
  • 访问所有记忆文件(隐私数据)

影响:

  • 代理可能偏离原始目标(目标漂移)
  • 复杂度爆炸导致不可维护
  • 上下文泄露到外部渠道
  • 持久化恶意任务

建议:

  1. 限制 cron 创建:
    # AGENTS.md 规则
    ## Cron 任务创建约束
    所有 `openclaw cron add` 操作必须人工确认。
    自动创建的 cron 任务在 24 小时后自动禁用。
  2. 定期审计:
    # 每周检查
    0 0 * * 0 /usr/local/bin/audit-proactive-agent.sh
  3. 配置文件保护:
    # 设置不可变属性
    sudo chattr +i ~/.openclaw/openclaw.json

4.6 供应链风险

问题:

  • clawhub 安装外部技能
  • 未审查的代码可能包含漏洞
  • 技能可能有恶意行为
  • 缺少沙箱隔离

影响:

  • 供应链攻击(植入后门)
  • 数据泄露到外部服务器
  • 恶意代码执行

建议:

  1. 技能审查流程:
    # 安装前检查
    clawhub search <skill-name>
    curl https://clawhub.com/api/skills/<skill-name>/source | less
  2. 沙箱测试:
    # 在隔离环境测试
    docker run -it --rm openclaw/sandbox test-skill <skill-name>
  3. 权限最小化:
    # openclaw.json
    skills:
      sandbox: true
      network: false
      filesystem: readonly

5. 优先级建议

P0 - 立即执行(24小时内)

5.1 启用 Bitwarden 2FA

# 检查是否支持 2FA
bw config server --help | grep -i 2fa

# 如果支持,启用
bw config two-factor enable --method 0  # Authenticator

5.2 添加密码访问审计

# 创建审计日志目录
sudo mkdir -p /var/log/openclaw/audit
sudo chown $USER:$USER /var/log/openclaw/audit

# 配置 auditd
cat <<EOF | sudo tee /etc/audit/rules.d/openclaw-bw.rules
-w /usr/local/bin/bw -p x -k bw-access
-w ~/.config/Bitwarden\ CLI -p wa -k bw-data
EOF

# 重启 auditd
sudo systemctl restart auditd

5.3 启用 GitHub 分支保护

# 使用 gh CLI
gh api -X PUT repos/{owner}/{repo}/branches/main/protection \
  -F required_pull_request_reviews='{"required_approving_review_count":1}' \
  -F required_status_checks='{"strict":true,"contexts":[]}' \
  -F enforce_admins=true

5.4 配置 ADB 自动备份

# 创建备份脚本
cat <<'EOF' > ~/bin/adb-safe-wrapper
#!/bin/bash
DANGEROUS_CMDS=("uninstall" "clear" "reboot" "MASTER_CLEAR")
BACKUP_DIR=~/adb-backups

for cmd in "${DANGEROUS_CMDS[@]}"; do
    if [[ "$*" == *"$cmd"* ]]; then
        echo "⚠️ Dangerous operation detected: $cmd"
        echo "Creating backup..."
        mkdir -p "$BACKUP_DIR"
        /usr/bin/adb backup -apk -shared -f "$BACKUP_DIR/pre-$(date +%Y%m%d_%H%M%S).ab"
        read -p "Continue with dangerous operation? (yes/no): " confirm
        [[ "$confirm" != "yes" ]] && exit 1
    fi
done

/usr/bin/adb "$@"
EOF

chmod +x ~/bin/adb-safe-wrapper
sudo ln -sf ~/bin/adb-safe-wrapper /usr/local/bin/adb

P1 - 本周完成(7天内)

5.5 实施操作审计系统

# 创建统一审计日志
sudo mkdir -p /var/log/openclaw/audit
sudo chown -R $USER:$USER /var/log/openclaw

# 配置 auditd 规则
cat <<'EOF' | sudo tee /etc/audit/rules.d/openclaw-skills.rules
# High-risk skills
-w /usr/local/bin/bw -p x -k bw-cli-access
-w /usr/bin/adb -p x -k adb-access
-w /usr/bin/gh -p x -k github-access
-w /usr/bin/ydotool -p x -k desktop-automation
-w /usr/bin/openclaw -p x -k openclaw-access

# Configuration files
-w ~/.openclaw -p wa -k openclaw-config
-w ~/.secrets -p wa -k secrets-access
EOF

sudo systemctl restart auditd

5.6 配置 healthcheck 自动回滚

# 创建快照脚本
cat <<'EOF' > ~/bin/healthcheck-safe
#!/bin/bash
SNAPSHOT_NAME="pre-healthcheck-$(date +%Y%m%d_%H%M%S)"

# 创建快照
echo "Creating system snapshot: $SNAPSHOT_NAME"
sudo timeshift --create --comments "$SNAPSHOT_NAME"

# 执行 healthcheck
echo "Running healthcheck..."
/usr/bin/openclaw healthcheck "$@"
EXIT_CODE=$?

# 如果失败,提示回滚
if [[ $EXIT_CODE -ne 0 ]]; then
    echo "⚠️ Healthcheck failed. Rollback with:"
    echo "sudo timeshift --restore --snapshot '$SNAPSHOT_NAME'"
fi

exit $EXIT_CODE
EOF

chmod +x ~/bin/healthcheck-safe

5.7 审查 proactive-agent cron 任务

# 列出所有 cron 任务
openclaw cron list

# 检查是否有可疑任务
openclaw cron list | grep -E "(isolated|spawn|subagent)"

# 审查每个任务的 payload
for id in $(openclaw cron list --json | jq -r '.[].id'); do
    echo "=== Cron Job $id ==="
    openclaw cron show $id
    echo
done

5.8 添加 linux-desktop 截图过滤

# 创建截图过滤脚本
# ~/.openclaw/skills/linux-desktop/scripts/screenshot_safe.py
import cv2
import numpy as np
from PIL import Image, ImageFilter

def blur_text_regions(image_path):
    """自动检测并模糊文本区域"""
    img = cv2.imread(image_path)
    
    # 转换为灰度图
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    
    # 检测文本区域(简化版,实际应使用 OCR)
    # 这里使用边缘检测作为示例
    edges = cv2.Canny(gray, 50, 150)
    contours, _ = cv2.findContours(edges, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
    
    # 模糊文本区域
    for contour in contours:
        x, y, w, h = cv2.boundingRect(contour)
        if w > 50 and h > 10:  # 过滤小噪点
            roi = img[y:y+h, x:x+w]
            blurred_roi = cv2.GaussianBlur(roi, (99, 99), 30)
            img[y:y+h, x:x+w] = blurred_roi
    
    # 保存
    output_path = image_path.replace('.png', '_safe.png')
    cv2.imwrite(output_path, img)
    return output_path

if __name__ == "__main__":
    import sys
    blur_text_regions(sys.argv[1])

P2 - 本月完成(30天内)

5.9 建立技能审查流程

# ~/.openclaw/SKILL-REVIEW.md

## 新技能安装审查流程

### 1. 来源验证
- [ ] 作者是否可信(查看历史技能)
- [ ] 是否在官方市场(ClawHub)
- [ ] 是否有安全审计记录

### 2. 代码审查
- [ ] 检查 SKILL.md 是否有可疑命令
- [ ] 搜索 shell 命令、curl/wget
- [ ] 检查是否有外部连接
- [ ] 查找数据外泄模式

### 3. 沙箱测试
```bash
# 在隔离环境测试
docker run -it --rm \
  --network none \
  -v $(pwd)/skill:/skill:ro \
  openclaw/sandbox \
  /usr/local/bin/test-skill /skill

4. 权限最小化

# 限制技能权限
skills:
  <skill-name>:
    filesystem: readonly
    network: false
    exec: false

5. 监控期

  • 前 7 天每天检查日志
  • 监控异常行为
  • 验证无数据泄露

#### 5.10 配置监控告警

```bash
# 安装监控工具
sudo apt install -y auditd audispd-plugins

# 配置实时告警
cat <<'EOF' | sudo tee /etc/audisp/plugins.d/openclaw-alert.conf
active = yes
direction = out
path = /usr/local/bin/openclaw-alert
type = always
args = /var/log/openclaw/alerts.log
EOF

# 创建告警脚本
cat <<'EOF' | sudo tee /usr/local/bin/openclaw-alert
#!/bin/bash
LOG_FILE=$1
ALERT_RULES=(
    "bw export.*--format"
    "gh repo delete"
    "adb.*MASTER_CLEAR"
    "healthcheck.*--fix.*--yes"
)

while read line; do
    for rule in "${ALERT_RULES[@]}"; do
        if [[ "$line" =~ $rule ]]; then
            echo "[$(date)] ALERT: $line" >> /var/log/openclaw/alerts.log
            # 发送通知(示例)
            # notify-send "OpenClaw Security Alert" "$line"
        fi
    done
done
EOF

sudo chmod +x /usr/local/bin/openclaw-alert

5.11 定期安全审计

# 创建每月审计 cron
cat <<'EOF' | sudo tee /etc/cron.d/openclaw-monthly-audit
# 每月 1 日凌晨 2 点运行安全审计
0 2 1 * * otter /usr/local/bin/openclaw-monthly-audit.sh
EOF

# 创建审计脚本
cat <<'EOF' > /usr/local/bin/openclaw-monthly-audit.sh
#!/bin/bash
REPORT_DIR=~/.openclaw/audit-reports
DATE=$(date +%Y%m%d)
REPORT_FILE="$REPORT_DIR/audit-$DATE.md"

mkdir -p "$REPORT_DIR"

echo "# OpenClaw Monthly Security Audit - $DATE" > "$REPORT_FILE"
echo >> "$REPORT_FILE"

# 1. 检查高风险技能日志
echo "## 1. High-Risk Skills Audit" >> "$REPORT_FILE"
for skill in bw adb gh healthcheck; do
    echo "### $skill" >> "$REPORT_FILE"
    ausearch -k $skill-access -ts recent-month | head -100 >> "$REPORT_FILE"
    echo >> "$REPORT_FILE"
done

# 2. 检查 cron 任务变更
echo "## 2. Cron Job Changes" >> "$REPORT_FILE"
openclaw cron list >> "$REPORT_FILE"
echo >> "$REPORT_FILE"

# 3. 检查配置文件修改
echo "## 3. Configuration File Changes" >> "$REPORT_FILE"
find ~/.openclaw -type f -mtime -30 >> "$REPORT_FILE"
echo >> "$REPORT_FILE"

# 4. 检查新安装的技能
echo "## 4. Recently Installed Skills" >> "$REPORT_FILE"
find ~/.openclaw/skills -type d -mtime -30 >> "$REPORT_FILE"
echo >> "$REPORT_FILE"

# 发送报告
echo "Audit report saved to: $REPORT_FILE"
EOF

chmod +x /usr/local/bin/openclaw-monthly-audit.sh

5.12 备份策略

# 配置关键数据备份
cat <<'EOF' > ~/.openclaw/backup-config.sh
#!/bin/bash
BACKUP_DIR=~/.openclaw/backups
DATE=$(date +%Y%m%d)

# 创建备份目录
mkdir -p "$BACKUP_DIR/$DATE"

# 1. 备份配置文件
tar -czf "$BACKUP_DIR/$DATE/openclaw-config.tar.gz" ~/.openclaw/*.json ~/.openclaw/*.md

# 2. 备份密码库(加密)
bw export --format encrypted_json --output "$BACKUP_DIR/$DATE/bitwarden-encrypted.json"

# 3. 备份技能列表
openclaw skills list > "$BACKUP_DIR/$DATE/skills-list.txt"

# 4. 备份 cron 任务
openclaw cron list > "$BACKUP_DIR/$DATE/cron-jobs.txt"

# 5. 备份审计日志(最近 30 天)
tar -czf "$BACKUP_DIR/$DATE/audit-logs.tar.gz" -C /var/log/openclaw audit

# 保留最近 3 个月的备份
find "$BACKUP_DIR" -type d -mtime +90 -exec rm -rf {} \;

echo "Backup completed: $BACKUP_DIR/$DATE"
EOF

chmod +x ~/.openclaw/backup-config.sh

# 配置每周备份 cron
(crontab -l 2>/dev/null; echo "0 2 * * 0 ~/.openclaw/backup-config.sh") | crontab -

6. 合规性检查

6.1 GDPR/隐私合规

相关技能:

  • ⚠️ feishu-doc - 可能处理个人数据(文档内容)
  • ⚠️ caldav-calendar - 访问日历(包含个人信息、会议)
  • ⚠️ linux-desktop - 截图可能包含个人信息
  • ⚠️ adb - 访问设备数据(照片、联系人)
  • ✅ bw-cli - 数据加密存储

合规建议:

  1. 数据分类:

    # ~/.openclaw/data-classification.yml
    personal_data:
      - calendar_events
      - contacts
      - photos
      - documents
    
    handling_rules:
      personal_data:
        encryption: required
        access_log: required
        retention: 30_days
        external_sharing: prohibited
  2. 访问控制:

    # 限制个人信息访问
    auditctl -w ~/.config/calcurse -p r -k calendar-access
    auditctl -w ~/DCIM -p r -k photos-access
  3. 数据泄露防护:

    # 监控外部传输
    iptables -A OUTPUT -p tcp --dport 443 -m string \
      --string "calendar" --algo bm -j LOG --log-prefix "CALENDAR_EXPORT"

6.2 SOC 2 / 安全控制

缺失项:

  • ❌ 访问控制列表(ACL)
  • ❌ 操作审计日志
  • ❌ 变更管理流程
  • ⚠️ 入侵检测系统(IDS)

实施建议:

  1. 访问控制:

    # ~/.openclaw/access-control.yml
    skills:
      bw-cli:
        allowed_users: [otter]
        time_restriction: "09:00-18:00"
        max_attempts_per_hour: 10
      
      adb:
        allowed_devices: [device-serial-1]
        require_backup: true
      
      healthcheck:
        allowed_users: [otter]
        require_confirmation: true
  2. 变更管理:

    # ~/.openclaw/CHANGE-MANAGEMENT.md
    
    ## 变更审批流程
    
    ### 高风险变更(需要提前审批)
    - 安装新技能
    - 修改系统配置(healthcheck)
    - 修改防火墙规则
    - 创建 cron 任务
    
    ### 中风险变更(需要当日确认)
    - 修改技能配置
    - 访问敏感数据
    - Spawn 子代理
    
    ### 低风险变更(自动执行)
    - 读取非敏感数据
    - 生成内容
    - 本地文件操作

7. 监控与告警

7.1 实时监控

# 配置 auditd 实时监控
sudo apt install -y auditd audispd-plugins

# 监控规则
cat <<'EOF' | sudo tee /etc/audit/rules.d/openclaw-skills.rules
## 密码管理监控
-w /usr/local/bin/bw -p x -k bw-cli-access
-a always,exit -F arch=b64 -S open -F path=/etc/bitwarden -k bw-data-access

## GitHub 操作监控
-w /usr/bin/gh -p x -k github-access
-a always,exit -F arch=b64 -S execve -F comm=gh -k github-exec

## 设备控制监控
-w /usr/bin/adb -p x -k adb-access
-a always,exit -F arch=b64 -S execve -F comm=adb -k adb-exec

## 系统配置监控
-w /etc/ssh/sshd_config -p wa -k ssh-config
-w /etc/ufw -p wa -k firewall-config
-w /etc/systemd/system -p wa -k systemd-config

## 桌面自动化监控
-w /usr/bin/ydotool -p x -k desktop-automation
-w /usr/bin/xdotool -p x -k desktop-automation
EOF

# 启动审计
sudo systemctl enable auditd
sudo systemctl start auditd

7.2 日志收集

# 创建统一日志目录
sudo mkdir -p /var/log/openclaw/audit
sudo chown -R otter:otter /var/log/openclaw

# 日志轮转配置
cat <<'EOF' | sudo tee /etc/logrotate.d/openclaw-audit
/var/log/openclaw/audit/*.log {
    daily
    rotate 90
    compress
    delaycompress
    missingok
    notifempty
    create 0640 otter otter
}
EOF

7.3 告警规则

# /usr/local/bin/openclaw-alert-engine.py
#!/usr/bin/env python3
import re
from datetime import datetime, timedelta
from collections import defaultdict

class AlertEngine:
    def __init__(self):
        self.alert_rules = {
            "password_export": {
                "pattern": r"bw export.*--format",
                "severity": "critical",
                "message": "Password vault export detected"
            },
            "repo_deletion": {
                "pattern": r"gh repo delete",
                "severity": "critical",
                "message": "Repository deletion attempted"
            },
            "factory_reset": {
                "pattern": r"adb.*MASTER_CLEAR",
                "severity": "critical",
                "message": "Android factory reset attempted"
            },
            "config_auto_fix": {
                "pattern": r"healthcheck.*--fix.*--yes",
                "severity": "high",
                "message": "Automatic system configuration change"
            },
            "bulk_operations": {
                "check": self.check_bulk_operations,
                "severity": "medium",
                "message": "Bulk operations detected (>5 in 1 minute)"
            }
        }
        
        self.operation_history = defaultdict(list)
    
    def check_bulk_operations(self, log_line):
        # 检查短时间内大量操作
        now = datetime.now()
        minute_ago = now - timedelta(minutes=1)
        
        # 清理旧记录
        self.operation_history = {
            k: v for k, v in self.operation_history.items()
            if v[-1] > minute_ago
        }
        
        # 记录当前操作
        self.operation_history[now.minute].append(now)
        
        # 检查是否超过阈值
        recent_count = len(self.operation_history[now.minute])
        return recent_count > 5
    
    def analyze_log(self, log_line):
        for rule_name, rule in self.alert_rules.items():
            if "pattern" in rule:
                if re.search(rule["pattern"], log_line):
                    self.trigger_alert(rule, log_line)
            elif "check" in rule:
                if rule["check"](log_line):
                    self.trigger_alert(rule, log_line)
    
    def trigger_alert(self, rule, log_line):
        alert = {
            "timestamp": datetime.now().isoformat(),
            "severity": rule["severity"],
            "message": rule["message"],
            "log_line": log_line
        }
        
        # 写入告警日志
        with open("/var/log/openclaw/alerts.log", "a") as f:
            f.write(f"{alert}\n")
        
        # 发送通知(示例)
        if rule["severity"] == "critical":
            self.send_notification(alert)
    
    def send_notification(self, alert):
        # 这里可以集成通知系统
        # 例如: Telegram、Email、Slack
        print(f"ALERT: {alert['message']}")

if __name__ == "__main__":
    import sys
    engine = AlertEngine()
    for line in sys.stdin:
        engine.analyze_log(line)

8. 应急响应

8.1 紧急情况处理流程

# ~/.openclaw/INCIDENT-RESPONSE.md

## 安全事件响应流程

### Level 1 - 紧急(立即处理)
**场景**: 密码泄露、恶意代码推送、设备数据擦除

**立即行动**:
1. 断开网络连接
   ```bash
   sudo ifconfig eth0 down
  1. 撤销所有活跃会话

    bw logout
    gh auth logout
    adb kill-server
  2. 检查审计日志

    ausearch -ts recent | grep -E "(bw|gh|adb)"
  3. 通知相关人员

Level 2 - 高优先级(2小时内处理)

场景: 可疑操作、配置变更、异常访问

处理步骤:

  1. 记录事件详情
  2. 分析影响范围
  3. 隔离受影响系统
  4. 准备修复方案

Level 3 - 中等优先级(24小时内处理)

场景: 权限提升、策略违规

处理步骤:

  1. 调查事件原因
  2. 更新安全策略
  3. 培训相关人员

### 8.2 恢复检查清单

```bash
#!/bin/bash
# ~/.openclaw/scripts/post-incident-check.sh

echo "=== Post-Incident Security Check ==="

# 1. 检查配置文件完整性
echo "1. Checking configuration files..."
find ~/.openclaw -type f -name "*.json" -exec sha256sum {} \; > /tmp/current_checksums.txt
diff ~/.openclaw/config_checksums.txt /tmp/current_checksums.txt

# 2. 检查 cron 任务
echo "2. Checking cron jobs..."
openclaw cron list

# 3. 检查活跃会话
echo "3. Checking active sessions..."
bw status
gh auth status

# 4. 检查网络连接
echo "4. Checking network connections..."
ss -tupn

# 5. 检查最近修改的文件
echo "5. Recently modified files..."
find ~/.openclaw -type f -mtime -1

# 6. 验证技能完整性
echo "6. Verifying skills..."
openclaw skills verify

echo "=== Check complete ==="

9. 总结与行动计划

9.1 当前状态总结

风险分布:

  • 🔴 高风险: 8 个技能(21.6%)
  • 🟡 中风险: 12 个技能(32.4%)
  • 🟢 低风险: 17 个技能(45.9%)

主要问题:

  1. ❌ 缺少操作审计日志
  2. ❌ 密码管理缺少 2FA
  3. ❌ 代码推送缺少强制审查
  4. ❌ 设备操作缺少自动备份
  5. ❌ 系统配置缺少自动回滚
  6. ❌ 自我进化缺少外部约束

9.2 改进优先级

优先级任务时间影响
P0启用 bw-cli 2FA2h🔴 Critical
P0添加操作审计4h🔴 Critical
P0启用分支保护1h🔴 Critical
P0配置 ADB 备份2h🔴 Critical
P1实施监控系统8h🟡 High
P1配置自动回滚4h🟡 High
P1审查 cron 任务2h🟡 High
P1添加截图过滤4h🟡 High
P2建立审查流程8h🟢 Medium
P2配置告警系统8h🟢 Medium
P2定期安全审计4h🟢 Medium
P2备份策略4h🟢 Medium

9.3 成功指标

安全性指标:

  • ✅ 100% 高风险操作有审计日志
  • ✅ 100% 密码访问有 2FA 保护
  • ✅ 100% 代码推送经过审查
  • ✅ 100% 危险操作前有备份
  • ✅ < 5 分钟告警响应时间

合规性指标:

  • ✅ GDPR 合规(个人数据处理)
  • ✅ SOC 2 控制实施
  • ✅ 定期审计执行
  • ✅ 变更管理流程

可用性指标:

  • ✅ < 1% 误报率
  • ✅ < 2 小时恢复时间
  • ✅ 99.9% 系统可用性

9.4 下次审计

审计时间: 2026-04-04(30天后) 审计重点:

  1. 验证 P0 任务完成情况
  2. 检查审计日志是否正常工作
  3. 审查告警系统有效性
  4. 评估新安装的技能

10. 附录

10.1 相关文档

10.2 联系方式

审计负责人: 獭獭(AI 助理) 紧急联系: (待配置) 安全团队: (待配置)

10.3 更新记录

日期版本变更内容
2026-03-041.0初始版本

审计状态: ⚠️ 需要人工审查
下次审计: 2026-04-04
负责人: 獭獭(主 AI 助理)


本报告由 OpenClaw 自动生成,建议定期审查和更新。