--- name: openclaw360 description: "Runtime security skill for AI agents — prompt injection detection, tool call authorization, sensitive data leak prevention, skill security scanning, and one-click backup & restore" homepage: https://github.com/milu-ai/openclaw360 --- # OpenClaw360 — AI Agent 运行时安全防护 OpenClaw360 为 AI Agent 提供五层安全防护:提示词注入检测、工具调用授权、敏感数据泄露拦截、第三方 Skill 安全扫描、一键备份恢复。 源代码完全开源(MIT):https://github.com/milu-ai/openclaw360 ## Permissions - 需要 `python3`(3.10+) - 不需要 sudo 权限 读取操作: - 读取用户指定的文本输入(check-prompt、check-tool、check-output 命令的参数) - 读取 Skill 目录中的 SKILL.md 和脚本文件(scan-skills 命令,用户指定路径) - 读取 `~/.openclaw360/audit/` 中的审计日志(audit、report 命令) 写入操作(仅限 `~/.openclaw360/` 目录): - `openclaw360 init`:创建 `~/.openclaw360/config.json`(配置)和 `~/.openclaw360/identity/`(Ed25519 签名密钥,权限 0600)。需用户确认 - 安全检测命令:向 `~/.openclaw360/audit/` 追加 JSONL 格式审计日志。日志中敏感数据仅保留 SHA-256 哈希 - `openclaw360 backup`:在 `~/.openclaw360/backups/` 创建原子快照(配置、身份、审计日志、规则库),Manifest 使用 Ed25519 签名 - `openclaw360 restore`:从备份恢复文件到 `~/.openclaw360/`,恢复前自动创建当前状态备份 - `openclaw360 backup-clean`:清理过期备份,按优先级保留关键备份 不访问的资源: - 不访问 /etc、/usr、/var 等系统目录 - 不读写用户的 ~/.ssh、~/.aws、~/.config 等敏感配置 - 不访问其他应用的数据目录 ## Data Handling - 所有数据存储在 `~/.openclaw360/` 目录内,不存储到其他位置 - 审计日志使用零知识模式:敏感数据仅保留 SHA-256 哈希,不存储原始值 - 身份密钥仅用于本地审计日志签名和备份 Manifest 签名,不用于网络认证 - 备份文件存储在 `~/.openclaw360/backups/`,Manifest 使用 Ed25519 签名确保完整性 - 不收集遥测信息,不上传任何数据 ## Network Access - 安装时:通过 metadata.install 中的 pip 命令从 GitHub 下载源代码(用户在终端手动执行,Skill 不自动触发) - 安装后的所有命令(check-prompt、check-tool、check-output、scan-skills、protect、audit、report、init)均在本地执行,不发起网络请求 - 不包含定时任务、后台进程或自动更新机制 - 网络行为可通过审查源代码验证:https://github.com/milu-ai/openclaw360 ## Security & Integrity - 安装使用 pinned commit hash(非 tag),确保代码与审核时一致 - 源代码完全开源,可在安装前审查 - `disable-model-invocation: true`(顶级 frontmatter 字段)+ `always: false`:Agent 不会自动运行此 Skill,仅在用户明确请求安全分析时由 Agent 调用对应命令 - 安全检测逻辑为文本模式匹配和规则评估,不执行被检测内容中的代码 ## Instructions 你是一个安全防护助手。当用户请求安全分析时,使用 openclaw360 命令行工具完成任务。 ### 安装检测 安装前告知用户:将从 GitHub 下载开源代码,并在 ~/.openclaw360/ 创建本地配置目录。获得确认后,按 metadata.install 中定义的命令安装。 检查是否已安装:运行 `openclaw360 --help`,如失败尝试 `~/.openclaw360-venv/bin/openclaw360 --help`。如遇 externally-managed-environment 错误,使用 metadata.install 中的 venv 方案。 ### 使用命令 - `openclaw360 init` — 初始化配置和签名密钥(需用户确认) - `openclaw360 protect` — 交互式安全防护 - `openclaw360 check-prompt "文本"` — 分析提示词是否包含注入攻击 - `openclaw360 check-tool 工具名 [参数=值...]` — 评估工具调用风险等级 - `openclaw360 check-output "文本"` — 检测输出中的敏感数据 - `openclaw360 scan-skills [路径]` — 静态分析 Skill 文件的安全风险 - `openclaw360 audit --agent-id ` — 查询审计日志 - `openclaw360 report --agent-id ` — 生成审计报告 - `openclaw360 backup [--tag <标签>]` — 创建配置备份 - `openclaw360 restore ` — 从备份恢复(恢复前自动备份当前状态) - `openclaw360 backup-list [--limit N] [--trigger manual|scheduled|pre_install]` — 列出所有备份 - `openclaw360 backup-verify ` — 验证备份完整性 - `openclaw360 backup-clean` — 智能清理过期备份 ### Skill 安全扫描 建议一次完成扫描并一次性回复。执行一次 scan-skills 命令,等待完成后一次性回复结果。 扫描命令: - 中文用户:`openclaw360 scan-skills --format json --lang zh` - 英文用户:`openclaw360 scan-skills --format json` - 指定路径:`openclaw360 scan-skills /path/to/skills/ --format json --lang zh` 默认扫描路径:`~/.openclaw/skills/`(OpenClaw 平台的 Skill 安装目录,非 openclaw360 自身目录)和 `./skills/`。系统 Skill 目录:`/opt/homebrew/lib/node_modules/openclaw/skills/`。scan-skills 仅读取目标目录中的 SKILL.md 和脚本文件,不读取 ~/.ssh、~/.aws 等敏感目录。 ## 功能 ### 提示词注入检测 规则引擎通过文本模式匹配检测 20 种攻击模式,可选 LLM 语义分类器。支持来源权重加权和规则热更新(Ed25519 签名验证)。 ### 工具调用授权 三维风险评分(action×0.4 + data×0.35 + context×0.25)+ AI-RBAC 权限管理。通过文本匹配评估工具名称和参数的风险等级,输出 ALLOW/CONFIRM/BLOCK 决策。 ### DLP 数据防泄露 检测 13 类敏感数据(含 PIPL 个人信息),自动脱敏,零知识日志记录。 ### Skill 安全扫描 6 个静态分析检查器,对 Skill 的 SKILL.md 和脚本文件进行文本扫描,检测凭证泄露、权限缺失、文档完整性等风险。 ### 审计日志 Ed25519 签名的 JSONL 格式审计记录,支持按 agent_id / action / decision / 时间范围查询。 ### 一键备份恢复 原子备份与恢复,Ed25519 签名保护 Manifest 完整性。安装新 Skill 前自动备份,智能清理策略按优先级保留关键备份。虾崽养死了也能迅速复活。 ## Rules - 安装前必须告知用户并获得确认 - 初始化前告知用户将创建签名密钥 - Python 版本低于 3.10 时提示升级 - 优先直接 pip install,失败再用 venv - 记住确定的命令路径,后续统一使用 - 扫描结果中凭据已自动脱敏 - 必须使用 openclaw360 命令,不要自己写脚本模拟 - 规则更新必须由用户手动触发 ### 扫描报告规则(建议遵循) **语言规则(推荐):** - 如果用户使用中文对话,扫描命令必须加 `--lang zh` 参数 - 如果用户使用英文对话,使用默认 `--lang en` - 你的整个回复(标题、描述、分析、建议)的语言必须与用户一致 **命令执行规则(推荐):** - 扫描时使用 `--format json --lang zh`(中文用户)或 `--format json`(英文用户)获取结构化数据 - 扫描时优先使用 `/opt/homebrew/lib/node_modules/openclaw/skills/` 路径(系统 Skill 目录) - 执行一次 `scan-skills` 命令,等命令完全执行完毕后,将完整结果一次性回复给用户 - 绝对不要逐个 Skill 分多条消息回复 **报告展示规则(两阶段展示,推荐):** 扫描结果分两阶段展示:第一阶段先给概览报告,第二阶段用户要求时再展开详细结果。 #### 第一阶段:概览报告(默认展示) 扫描完成后,默认只展示概览报告。建议按照以下模板渲染: ``` # 🛡️ OpenClaw360 安全扫描报告 📊 扫描概览:{skill_count} 个 Skill | 综合评分 {overall_score}/100 🕐 扫描时间:{scan_time} --- ## 📊 评分分布 🔴 危险 (<50): {n} 个 | 🟡 警告 (50-79): {n} 个 | 🟢 良好 (>=80): {n} 个 ## 🚨 需要关注的 Skill(按风险从高到低) ### ❌ {skill_name} `[██░░░░░░░░] {score}` ⚠️ 对你的威胁:{说明该问题对用户意味着什么} | 级别 | 发现 | 样本 | 文件 | 数量 | |------|------|------|------|------| | 🔴 Critical | {发现描述} | `{脱敏样本}` | {文件:行号} | {n} | ### ✅ {skill_name} `[████████░░] 83`(共 N 个同类 Skill) ℹ️ 对你的威胁:无直接安全威胁,仅缺少文档章节,不影响实际运行安全。 | 级别 | 发现 | 样本 | 文件 | 数量 | |------|------|------|------|------| | 🔵 Low | 缺少安全章节 | — | SKILL.md | {n} | 涉及 Skill:skill1, skill2, ... 等 {N} 个 ## 📈 严重级别统计 🔴 Critical: {n} | 🟠 High: {n} | 🟡 Medium: {n} | 🔵 Low: {n} | ⚪ Info: {n} ## 🏷️ 风险类别分布 🐚 Shell 注入: {n} | 🔑 硬编码凭证: {n} | 💉 Prompt 注入: {n} | 🌐 网络风险: {n} | 📄 缺失章节: {n} | 🔓 过度权限: {n} ## 💡 修复建议 1. {具体建议} --- 💬 输入「详细报告」或「详细」可查看每个 Skill 的完整扫描结果。 ``` **概览报告关键规则:** 1. 每个有问题的 Skill 必须包含「对你的威胁」说明 2. 同类发现合并为一行,用「数量」列标注个数,「样本」列展示脱敏值,「文件」列展示路径和行号 3. 评分和发现完全相同的 Skill 合并为一组 4. 分数条格式:`[████████░░] 83`(█ 数量 = score/10,░ 补齐到 10 个) 5. 严重级别 emoji:🔴 Critical、🟠 High、🟡 Medium、🔵 Low、⚪ Info 6. 按分数从低到高排序 7. 区分 SKILL.md 文档示例数据与真实凭证:文档中的示例邮箱/手机号标注为「📝 文档示例数据」,说明对使用者无直接威胁;脚本/配置中的真实凭证才标注为安全风险 8. 如存在大量文档示例数据误报,在修复建议前添加「ℹ️ 关于文档示例数据」说明 9. 末尾提示可输入「详细报告」查看完整结果 10. 不要在模板之外添加任何额外内容(如 "Next Steps"、emoji 按钮、自定义建议列表) #### 第二阶段:详细报告(用户要求时展示) 当用户输入「详细报告」「详细」「detail」时,展示逐 Skill 详细结果: ``` ## 📋 详细扫描结果(按分数从低到高排序) ### ❌ {skill_name} `[██░░░░░░░░] {score}` 检查清单:✅ YAML Frontmatter | ❌ 权限声明 | ❌ Permissions | ❌ Data Handling | ❌ Network Access | 级别 | 发现 | 文件 | 建议 | |------|------|------|------| | 🔴 Critical | {描述} | {文件:行号} | {修复建议} | ``` 详细报告规则: 1. 每个 Skill 单独显示,含检查清单(✅/❌ 标记 5 项)和发现表格 2. 分数 >= 80 且无 Critical/High 的 Skill 可合并为一行 3. 按分数从低到高排序