← 返回 Skills 市场
g1at

ClawLock

作者 g0at · GitHub ↗ · v2.3.0 · MIT-0
cross-platform ⚠ suspicious
206
总下载
1
收藏
0
当前安装
7
版本数
在 OpenClaw 中安装
/install clawlock
功能描述
ClawLock — 综合安全扫描、红队测试与加固工具,支持全平台。 当用户明确要求安全扫描、安全体检、安全加固时触发: 「开始安全体检」「安全扫描」「检查 skill 安全」「安全加固」「探测实例」 「scan my claw」「security check」「drift detection」「red team...
使用说明 (SKILL.md)

\r \r

ClawLock\r

\r 综合安全扫描、红队测试与加固工具。支持 OpenClaw · ZeroClaw · Claude Code · 通用 Claw。\r 运行于 Linux · macOS · Windows · Android (Termux)。\r \r English Version → SKILL_EN.md\r \r ---\r \r

安装与使用\r

\r

pip install clawlock          # 安装\r
clawlock scan                 # 全面安全扫描\r
clawlock discover             # 发现所有安装实例\r
clawlock precheck ./SKILL.md  # 新 skill 导入预检\r
clawlock harden --auto-fix    # 加固(自动修复真正安全的本地变更)\r
clawlock scan --format html   # HTML 报告\r
```\r
\r
作为 Claw Skill 安装:复制本文件到 skills 目录,并在对应 Claw 产品对话中发起安全检查请求。\r
\r
---\r
\r
## 触发边界\r
\r
触发后按以下分类对号入座,**不要跨类执行**:\r
\r
| 用户意图 | 执行功能 | 外部依赖 |\r
|---------|---------|---------|\r
| 全面安全体检 / health check | **Feature 1: 全量扫描** | 无 |\r
| 某个 skill 是否安全 / 安装前审计 | **Feature 2: Skill 单体审计** | 无 |\r
| 导入新 skill 前检查 | **Feature 3: Skill 导入预检** | 无 |\r
| 加固 / 收紧配置 | **Feature 4: 安全加固向导** | 无 |\r
| SOUL.md / Memory 文件 drift | **Feature 5: Drift 检测** | 无 |\r
| 发现系统上的安装 | **Feature 6: 安装发现** | 无 |\r
| 红队 / jailbreak 测试 | **Feature 7: LLM 红队测试** | ⚠️ 需 Node.js + promptfoo / npx |\r
| MCP 服务器是否安全 | **Feature 8: MCP 深度扫描** | 无(内建引擎) |\r
| React2Shell / CVE-2025-55182 | **Feature 9: 依赖漏洞检查(并入代码扫描)** | 无 |\r
| Agent 多智能体安全扫描 | **Feature 10: Agent-Scan** | 无(内建引擎) |\r
| 查看扫描历史趋势 | **Feature 11: 扫描历史** | 无 |\r
| 持续监控模式 | **Feature 12: 持续监控** | 无 |\r
\r
不要将普通的 Claw 使用、项目调试、依赖安装当作触发本 skill 的理由。\r
\r
---\r
\r
## 隐私声明\r
\r
绝大多数检查在**本地运行**。只有在对应功能被启用时,才会发起以下网络请求:\r
\r
| 请求场景 | 发送数据 | 绝不发送 | 依赖 |\r
|----------|----------|----------|------|\r
| CVE 情报查询 | 产品名(固定字符串)+ 版本号 | 无文件内容、无凭证、无会话记录 | 无(内建) |\r
| Skill 威胁情报查询 | skill 名称 + 来源标签 | 无代码内容、无用户数据 | 无(内建) |\r
| Agent-Scan LLM 语义评估(可选) | 代码片段(截断到 8K 字符) | 无完整源码、无凭证 | 需 `--llm` + API key |\r
| promptfoo 红队测试(可选) | 测试 Prompt 载荷 | 无本地文件 | 需 Node.js,并通过 promptfoo 或 npx 运行 |\r
\r
离线优先写法:\r
\r
- 全量扫描离线:`clawlock scan --no-cve --no-redteam`\r
- 单体审计离线:`clawlock skill /path/to/skill --no-cloud`\r
- 如未启用 `--llm`,Agent-Scan 不会发起 LLM 请求\r
\r
在 Claw 产品对话里,必须明确告诉用户:**本次哪些在线能力实际运行了,哪些被跳过了,哪些暂不可用。**\r
\r
云端地址可自定义:`export CLAWLOCK_CLOUD_URL=https://your-instance`。\r
\r
---\r
\r
## 执行前安全提醒\r
\r
在实际调用 `clawlock` 前,先做以下最小核对:\r
\r
1. 确认当前要调用的 `clawlock` 就是预期安装版本,不要误用同名脚本或旧版本二进制。\r
2. 确认扫描目标是用户明确指定的对象,不要把测试命令误打到生产地址或无关目录。\r
3. 如用户明确要求本地优先或离线评估,优先关闭可选在线能力,再继续执行。\r
4. 如运行红队测试,先确认当前环境允许访问目标端点,且该目标确实适合做安全测试。\r
\r
---\r
\r
## 版本更新预检\r
\r
在进入任何安全扫描、导入预检、加固或 drift 检查前,**默认先检查 `clawlock` 在 PyPI 上是否有新版本,以及 GitHub 仓库中的最新 skill 文件是否比本地更新**:\r
\r
```bash\r
clawlock version --check-update --json --skill-path /path/to/SKILL.md\r
```\r
\r
执行规则:\r
\r
1. `clawlock` 本体版本以 **PyPI 最新版本** 作为唯一事实来源。\r
2. skill 版本以 **GitHub 仓库 `main` 分支中的最新 skill 文件** 为准:\r
   - 中文版 skill 对应 `https://github.com/g1at/ClawLock/blob/main/skill/SKILL.md`\r
   - 英文版 skill 对应 `https://github.com/g1at/ClawLock/blob/main/skill/SKILL_EN.md`\r
3. 如果检测到有新版本,或发现 GitHub 中的最新 skill 文件比本地更新,先明确告诉用户:\r
   - 当前本地版本\r
   - PyPI 最新版本\r
   - GitHub 上 skill 的最新版本\r
   - 将要执行的更新动作\r
4. 然后**让用户选择**是否先更新,再继续后续安全操作。\r
5. 如果用户同意更新:\r
   - 由 skill 在当前 Claw 对话中直接执行更新,不要只把手工命令抛给用户\r
   - `clawlock` 本体更新动作:执行 `pip install -U clawlock`\r
   - skill 更新动作:从 GitHub 仓库拉取对应语言版本的最新 `skill/SKILL*.md`,替换本地 skill 文件后再继续\r
   - 更新完成后,再重新执行版本检查,确认本体与 skill 都已到最新状态\r
6. 如果当前 Claw 产品没有足够的工具权限、网络权限或文件写入能力,才退回为“告诉用户需要执行什么更新动作”,并明确说明为什么这次无法由 skill 直接完成更新。\r
7. 如果用户拒绝更新:继续使用当前版本执行,但必须明确说明“以下结果基于当前已安装版本”。\r
8. 如果版本检查失败、超时或网络不可用:继续后续扫描,但必须明确写出“本次未完成版本更新检查”。\r
\r
隐私边界:\r
- 该预检会访问在线版本源。\r
- 只发送查询 PyPI 所需的包名,并读取 GitHub 仓库中的公开 skill 文件;**不发送本地代码内容、凭证、会话记录**。\r
\r
---\r
\r
## 降级与跳过规则\r
\r
在 Claw 产品对话场景中,遇到以下情况时必须优雅降级,并把原因写清楚:\r
\r
- CVE 接口不可用:继续其余本地扫描,并明确写「本次未完成在线 CVE 匹配」。\r
- Skill 云端情报不可用:继续本地静态分析,并明确写「云端情报暂不可用,本结论基于本地规则」。\r
- 未启用 `--llm`、缺少 API key,或模型请求失败:保留本地 Agent-Scan 结果,并明确写「LLM 语义评估未执行」或失败原因。\r
- 缺少 Node.js / promptfoo / npx / endpoint:跳过红队测试,并明确写「红队测试已跳过」及原因。\r
- 任何检查被跳过、失败或暂不可用时,都**不得**改写成“已通过”或“未发现问题”。\r
\r
---\r
\r
## Feature 1: 全量安全扫描\r
\r
并发执行 8 个核心安全域扫描;默认 `scan` 已纳入 Agent 安全的配置层检查。\r
如需代码层 Agent 审计,额外运行 `clawlock agent-scan --code \x3Cpath>`。如果提供了 `--endpoint` 且没有传\r
`--no-redteam`,ClawLock 会在核心扫描完成后追加可选的第 9 步红队测试,\r
最后输出一份统一报告。\r
\r
```bash\r
clawlock scan                                    # 自动识别平台\r
clawlock scan --adapter openclaw --format json   # 指定适配器 + JSON\r
clawlock scan --mode monitor                     # 仅报告不阻断\r
clawlock scan --mode enforce                     # 发现高危 exit 1\r
clawlock scan --format html -o report.html       # HTML 报告\r
clawlock scan --endpoint http://localhost:8080/v1 # 含红队测试\r
clawlock scan --no-cve                           # 离线模式\r
```\r
\r
### Step 1 — 配置安全审计 + 危险环境变量\r
\r
读取 Claw 配置文件,执行内建审计(如有),再叠加 ClawLock 自研规则检查:\r
\r
| 风险项 | 触发条件 | 等级 |\r
|--------|---------|------|\r
| Gateway 鉴权 | `gatewayAuth: false` | 🔴 严重 |\r
| 文件访问范围 | `allowedDirectories` 含 `/` | 🟡 警告 |\r
| 浏览器控制 | `enableBrowserControl: true` | 🟡 警告 |\r
| 网络白名单 | `allowNetworkAccess: true` 无白名单 | 🟡 警告 |\r
| 服务绑定 | `server.host: 0.0.0.0` | 🔴 严重 |\r
| TLS 状态 | `tls.enabled: false` | 🟡 警告 |\r
| 操作审批 | `approvalMode: disabled` | 🟡 警告 |\r
| 速率限制 | `rateLimit.enabled: false` | 🟡 警告 |\r
| 硬编码凭证 | 正则匹配 11 种 API Key / Token 格式 | 🔴 严重 |\r
| 危险环境变量 | NODE_OPTIONS / LD_PRELOAD / DYLD_INSERT_LIBRARIES 等 11 个 | 🟠 高危 |\r
| 会话保留 | `sessionRetentionDays > 30` | 🔵 信息 |\r
\r
**解读规则:** 将内建审计发现视为**配置风险提示**,不直接映射为「确认的严重攻击」。用「存在风险,建议收紧」的语气。\r
\r
**输出要求:** 安全项与风险项都要展示。安全项示例:`✅ | Gateway 鉴权 | 已开启,外部无法直接连接。` 每一项只写「当前状态 + 可能后果 + 建议」,不超过一行。不要混入来自 Step 2-8 的内容。\r
\r
### Step 2 — 进程检测 + 端口暴露\r
\r
跨平台检测运行中的 Claw 进程和对外监听的端口(Linux: ps+ss, macOS: ps+lsof, Windows: tasklist+netstat)。\r
\r
### Step 3 — 凭证目录权限审计\r
\r
跨平台检查凭证文件/目录是否对其他用户可读(Unix: stat 位, Windows: icacls ACL)。\r
\r
### Step 4 — Skill 供应链风险扫描\r
\r
整合**云端威胁情报** + **本地 63 模式静态分析**。\r
\r
#### 4.1 云端情报查询\r
\r
> 数据发送:仅 skill 名称 + 来源标签。不发送代码内容。\r
\r
| verdict | 处理方式 |\r
|---------|---------|\r
| `safe` | 标记安全,继续本地扫描确认 |\r
| `malicious` | 🔴 严重,记录原因 |\r
| `risky` | 结合本地分析判断等级 |\r
| `unknown` | 仅执行本地静态扫描 |\r
| 请求失败 / 超时 / 非 200 / 空内容 / 无效 JSON | 视为不可用,继续本地扫描并标注「云端情报暂不可用」|\r
\r
**韧性规则:** 云端失败不阻断扫描。一个 skill 失败不阻止其他 skill。\r
\r
#### 4.2 本地静态分析(63 模式)\r
\r
🔴 严重(确认恶意):凭证外传(curl/wget) · 反弹Shell(bash/nc/Python/mkfifo) · 挖矿 · 批量删除 · chmod 777 · 提示词注入(覆盖/劫持/越狱/中文) · 混淆载荷(base64→shell) · 零宽字符 · Shell 命令嵌套混淆(`sh -c`/`bash -c`/`cmd /c` 多层包装绕过检测)\r
\r
🟠 高危:Unicode 转义混淆 · 硬编码凭证 · AI API 密钥 · 危险环境变量export · Cron持久化 · DNS外传 · 用户输入直接进eval · 递归删除系统目录\r
\r
🟡 警告(高权限但可能合理):eval/exec · subprocess · 凭证类环境变量 · 隐私目录访问 · 系统敏感文件 · 外部HTTP请求 · 动态模块导入 · ctypes/cffi · pickle反序列化 · 不安全YAML加载 · socket服务端 · webhook · 系统服务注册\r
\r
**判断原则:** 升级到 🔴 严重**必须**有明确越权、外传、破坏、恶意迹象之一。`eval`、`subprocess`、API 密钥读写**单独存在**时只判 🟡 警告。结合「声明用途 × 实际行为 × 是否外传」综合判断。\r
\r
**输出要求:**\r
- 有风险的 skill 写清:权限 + 用途是否一致 + 建议\r
- 安全 skill 超过 5 个时折叠为:`其余 {N} 个 ✅ 当前未发现明确高风险`\r
- **当前正在执行扫描的 ClawLock 自身不纳入 Step 4 统计**\r
\r
### Step 5 — 系统提示词 + 记忆文件 Drift 检测\r
\r
扫描 SOUL.md / CLAUDE.md / HEARTBEAT.md / MEMORY.md / memory/*.md:\r
1. **Prompt 注入** — 指令覆盖 / 角色劫持 / 越狱关键词 / 隐藏指令\r
2. **编码混淆** — Unicode smuggling · base64 长字符串\r
3. **SHA-256 Drift** — 与 `~/.clawlock/drift_hashes.json` 基准对比\r
\r
**安全守则:** 不读取、不枚举相册 / ~/Documents / ~/Downloads / 聊天记录 / 日志正文。不执行 sudo / TCC 绕过 / 沙箱逃逸。仅读配置元数据、权限状态、文件哈希。\r
\r
### Step 6 — MCP 暴露面 + 隐式工具投毒(10 个风险信号)\r
\r
扫描 MCP 配置文件,检测:\r
\r
| 风险项 | 等级 |\r
|--------|------|\r
| 绑定 0.0.0.0(对外网暴露) | 🔴 严重 |\r
| 连接非 localhost 远程端点 | 🟡 警告 |\r
| env 中含凭证字段(明文) | 🔴 严重 |\r
| env 中含危险变量 (NODE_OPTIONS 等) | 🟠 高危 |\r
| 参数篡改 (Parameter Tampering, ASR≈47%) | 🔴 严重 |\r
| 函数劫持 (Function Hijacking, ASR≈37%) | 🟠 高危 |\r
| 隐式触发器 (Implicit Trigger, ASR≈27%) | 🔴 严重 |\r
| Rug Pull 迹象 | 🟡 警告 |\r
| 工具覆盖 (Tool Shadowing) | 🟠 高危 |\r
| 跨域权限提升 | 🟡 警告 |\r
\r
检测覆盖所有 LLM 可见字段:description · annotations · errorTemplate · outputTemplate · inputSchema 参数描述。\r
\r
### Step 7 — CVE 版本漏洞匹配\r
\r
查询 ClawLock 云端漏洞情报库。\r
\r
**韧性规则:** 接口不可用时,明确提示「本次未完成在线漏洞匹配,建议稍后重试」,**不输出「未发现漏洞」**。漏洞超过 8 个时只列最严重的 8 个,表后补充「另有 N 个,建议升级到最新版」。\r
\r
### Step 8 — LLM 红队测试(可选,需 --endpoint)\r
\r
9 个 agent 专项插件 × 8 种攻击策略(含编码绕过)。\r
\r
> ⚠️ **外部依赖:** 此功能需要 Node.js 环境,并通过 `promptfoo` 或 `npx` 运行(例如 `npm install -g promptfoo`,或直接使用 `npx promptfoo@latest`)。如果当前环境无法安装,请跳过此步骤,不影响其余 8 个核心安全域的完整性。Skill 环境中通常无 Node.js,此步会自动跳过并提示原因。\r
\r
---\r
\r
## Feature 2: Skill 单体审计\r
\r
```bash\r
clawlock skill /path/to/skill-dir\r
clawlock skill /path/to/SKILL.md --no-cloud\r
```\r
\r
### 审计流程\r
\r
**Step 1 — 判断是否需要云端查询:**\r
\r
| Skill 来源 | 处理方式 |\r
|-----------|---------|\r
| `local` / `github` | 跳过云端查询,直接本地审计 |\r
| `clawhub` 或其他托管仓库 | 先查询云端情报,再叠加本地审计 |\r
| 云端返回 `unknown` / 请求失败 | 回退到本地审计 |\r
\r
**Step 2 — Skill 信息收集:**\r
\r
收集最少量上下文用于审计(不生成长篇背景分析):\r
- Skill 名称 + SKILL.md 声明的用途(1 句)\r
- 可执行逻辑的文件清单:scripts/、shell、package.json、config\r
- 实际使用的能力:文件读写/删除 · 网络请求 · Shell/子进程 · 敏感访问 (env/凭证/隐私路径)\r
- 声明权限 vs 实际使用权限的偏差\r
\r
**Step 3 — 本地静态分析:** 使用 63 模式引擎确定性扫描,判断原则同 Feature 1 Step 4。\r
\r
### 输出规范(严格执行,不展开成全量报告)\r
\r
无高风险时:\r
> 经检测暂未发现高风险问题,可继续评估后安装。\r
\r
有需关注但无明确恶意时:\r
> 发现需关注项,但当前未见明确恶意证据。该 skill 具备 `{具体能力}`,主要用于完成 `{SKILL.md 声明用途}`;建议仅在确认来源可信、权限范围可接受时使用。\r
\r
有确认风险时:\r
> 发现风险,不建议直接安装。该 skill `{主要风险描述}`,超出了声称的功能边界。建议先下线当前版本,确认来源和代码后再决定。\r
\r
**禁止绝对措辞:** 不使用「绝对安全」「可放心使用」「没有任何风险」。结论限定为「当前静态检查范围内」的评估。\r
\r
---\r
\r
## Feature 3: Skill 导入预检\r
\r
**当用户引入新的 SKILL.md 时,自动执行安全预检,及时告知用户风险。**\r
\r
```bash\r
clawlock precheck ./new-skill/SKILL.md\r
```\r
\r
6 维度检测:\r
1. **Prompt 注入** — 63 个恶意模式匹配(含中文)\r
2. **Shell 反混淆** — 递归解包 `sh -c`/`bash -c`/`cmd /c` 嵌套后再匹配\r
3. **敏感权限声明** — sudo/root/全盘访问/危险环境变量\r
4. **可疑 URL** — .xyz/.tk/.ml 等高风险 TLD\r
5. **隐藏内容** — 零宽字符 (Unicode smuggling)\r
6. **异常体积** — 文件大小超过 50KB\r
\r
---\r
\r
## Feature 4: 安全加固向导\r
\r
```bash\r
clawlock harden                          # 交互式\r
clawlock harden --auto                   # 应用安全动作并输出人工指导\r
clawlock harden --auto-fix               # 自动修复真正安全的本地变更\r
clawlock harden --from-scan --auto-fix   # 仅处理上次 scan 报告的高危项\r
clawlock harden --verify                 # 加固后重新校验、生成差异报告\r
clawlock harden --rollback               # 按备份回滚最近一次加固动作\r
```\r
\r
| ID | 措施 | 体验影响 | 需确认 | Auto-fix | LLM 可协助修复 |\r
|----|------|---------|--------|---------|--------------|\r
| H001 | 限制文件访问到工作区 | ⚠️ 跨目录 skill 失效 | 是 | 否 | ✅ |\r
| H002 | 开启 Gateway 鉴权 | ⚠️ 外部工具需重配 token | 是 | 否 | ✅ |\r
| H003 | 缩短会话日志保留 | ⚠️ 历史不可查 | 是 | ✅ 是 | — |\r
| H004 | 关闭浏览器控制 | ⚠️ 依赖浏览器的 skill 停用 | 是 | 否 | ✅ |\r
| H005 | 配置网络白名单 | 无影响 | 否 | 否 | ✅ |\r
| H006 | 审核 MCP 配置 | 仅指导 | 否 | 否 | ⚠️ 协助核查 |\r
| H007 | 建立提示词/记忆基准 | 无影响 | 否 | ✅ 是 | — |\r
| H008 | 启用操作审批 | ⚠️ 每次高危操作需确认 | 是 | ✅ 是 | — |\r
| H009 | 收紧凭证目录权限 | 无影响 | 否 | ✅ 是 | — |\r
| H010 | 配置速率限制 | 无影响 | 否 | 否 | ✅ |\r
| H011 | 禁止下载即执行 / 运行时远程安装 | ⚠️ 自举安装脚本可能失效 | 是 | 否 | ⚠️ 协助核查 |\r
| H012 | 禁止 Windows LOLBins / 脚本宿主 | ⚠️ Windows 管理脚本可能失效 | 是 | 否 | ⚠️ 协助核查 |\r
| H013 | 清理持久化落点 | ⚠️ 后台任务可能停止 | 是 | 否 | ⚠️ 协助核查 |\r
| H014 | 禁止隧道 / 反向代理 | ⚠️ 远程调试隧道可能失效 | 是 | 否 | ⚠️ 协助核查 |\r
| H015 | 收紧 MCP 鉴权 / 绑定 / CORS | ⚠️ 外部 MCP 工具可能需重配 | 是 | 否 | ✅ |\r
| H016 | 禁止用户控制动态模块加载 | ⚠️ 热加载插件可能失效 | 是 | 否 | ⚠️ 协助核查 |\r
| H017 | 对提示词与凭证日志脱敏 | ⚠️ 调试日志会变少 | 是 | 否 | ✅ |\r
| H018 | 清理不安全 prompt / skill 指令 | ⚠️ 不安全自动化措辞会失效 | 是 | 否 | ✅ |\r
\r
**规则:需二次确认的措施必须先向用户展示体验影响(黄色),等待明确 `y` 后才执行。默认 No。**\r
\r
**执行说明:** 加固向导按「可直接自动修复 / LLM 辅助可修复 / 仅给指导」分组展示措施。`H003` / `H007` / `H008` / `H009` 会执行本地自动修复(写入前会备份到 `~/.clawlock/backups/\x3Ctimestamp>/` 并记录到 `~/.clawlock/hardening_log.json`,可通过 `clawlock harden --rollback` 回滚)。其余措施多为配置或运维变更,若未真正改动,不应描述为"已应用"。\r
\r
### LLM 辅助加固流程\r
\r
对于上表 `Auto-fix = 否` 的项,Claw LLM 可使用自身的文件编辑能力协助完成剩余加固。按以下五步执行,**不得跳过任何一步**:\r
\r
**Step 1 — 获取结构化发现**\r
\r
```bash\r
clawlock scan --format json\r
```\r
\r
从输出的 `findings` 数组按 `level ∈ {critical, high, medium}` 过滤出待修复项,保留 `title` / `location` / `detail` 三个字段作为后续修复依据。\r
\r
**Step 2 — 优先执行 CLI 自动修复**\r
\r
```bash\r
clawlock harden --from-scan --auto-fix\r
```\r
\r
这一步会基于 Step 1 的结果,只对命中的发现执行 `H003` / `H007` / `H008` / `H009` 自动修复,并生成备份与日志。**先跑这一步再让 LLM 介入**,避免 LLM 重复处理 CLI 已能解决的项。\r
\r
**Step 3 — LLM 按发现定位配置**\r
\r
对每个剩余的 guidance-only 发现,依据 `location` 字段找到目标文件。常见目标:\r
\r
- `~/.openclaw/config.*` · `~/.zeroclaw/config.*` · `~/.claude/settings.json`\r
- MCP server JSON(通常在 `~/.claude/mcp_servers.json` 或项目级 `.mcp.json`)\r
- Skill 脚本 / SKILL.md / SOUL.md\r
\r
**必须先 Read 再改,不要盲写。** 如果文件不存在或无权限,跳过并说明原因。\r
\r
**Step 4 — 展示"当前 → 目标 + 体验影响"并等用户确认**\r
\r
每个拟修改项按以下格式展示给用户,**默认 No**:\r
\r
```md\r
- 文件:{path}\r
- 当前:{current_value}\r
- 目标:{target_value}\r
- 修复依据:{finding title}({finding level})\r
- 体验影响:{上表对应的 UX 影响}\r
- 是否应用?(y/N)\r
```\r
\r
用户逐项回答 `y` 才执行。批量 `y` 需用户明确表达。\r
\r
**Step 5 — 应用并二次验证**\r
\r
应用后运行:\r
\r
```bash\r
clawlock harden --verify\r
```\r
\r
`--verify` 会重新跑 `scan_config` 与 `scan_credential_dirs`,对比加固前后的 critical / high 数量并输出差异报告。如果剩余风险未下降,向用户说明原因(常见:文件未落盘 / 写到错路径 / 字段名写错),**不得将 Step 5 省略**。\r
\r
### LLM 辅助加固的安全约束\r
\r
- **必须备份:** 在写入前,把原文件复制到 `~/.clawlock/backups/\x3Ctimestamp>/` 并在 `~/.clawlock/hardening_log.json` 追加一条记录(measure_id / files_changed / backup_path),使 `clawlock harden --rollback` 能按统一入口回滚\r
- **不得越权:** 禁止 `sudo` / `chmod -R 777` / 跨用户目录写入 / 系统级服务安装 / 关闭 SELinux 或 AppArmor\r
- **最小必要变更:** 不对不相关配置做顺带优化或美化;保留原注释、字段顺序、缩进风格\r
- **不伪造"已应用":** 若某项需用户手动操作(如禁用 Windows 服务、移除 cron 任务、卸载恶意 skill),只写"建议手动执行并给出命令",不得报告为已完成\r
- **凭证不入日志:** LLM 补齐的 token / secret 必须引用 env 变量或 secret 管理器占位符(如 `${GATEWAY_TOKEN}`),严禁将实际值写进 config 或对话\r
- **跨平台拒写:** 当要改的路径在当前 OS 上不存在或权限不足时,直接跳过并明确说明,不要在无关目录制造新文件\r
- **信任边界:** 只基于 `clawlock scan` 的 findings 采取行动;不得自行扩大修复范围,不得编辑 findings 未命中的文件\r
\r
### LLM 可修复措施的具体映射\r
\r
| 措施 | LLM 的具体动作 |\r
|------|--------------|\r
| H001 | 修改 Claw 配置 `allowedDirectories`,用当前工作区绝对路径替换 `/` 或 `~` |\r
| H002 | 在 Claw 配置里把 `gatewayAuth` 改为 `true`,并让用户填入 token env 变量名(不是明文) |\r
| H004 | 设 `enableBrowserControl: false`;如存在依赖浏览器的 skill,先提醒用户这些 skill 会停用 |\r
| H005 | 为 `allowNetworkAccess: true` 补出明确的 `allowedDomains` 白名单(让用户逐条确认) |\r
| H006 | 按 Feature 1 Step 6 的 10 个 MCP 风险信号逐条核对,列出差异后让用户决定 |\r
| H010 | 在 Claw 配置里加 `rateLimit: { enabled: true, requestsPerMinute: 60 }` |\r
| H011–H014 | 协助搜索 skill / script / cron / launchctl / 计划任务 中的可疑持久化或隧道命令,列给用户确认后移除(不自动删) |\r
| H015 | 修改 MCP server JSON:`host` 改为 `127.0.0.1`、启用鉴权、限制 CORS `origin` |\r
| H016 | 搜索 skill 中的 `import(user_input)` / `importlib.import_module(user_input)` / `require(user_input)` 并引导收紧 |\r
| H017 | 在日志 / 提示词配置里启用脱敏开关,或对敏感字段加 mask |\r
| H018 | 按 `scan_skill` 报告的行号,将不安全的措辞改写为合规表达(如去掉"绕过确认""跳过审计"字样) |\r
\r
不在此表的项视为**仅给指导**,LLM 不得尝试自动改写。\r
\r
---\r
\r
## Feature 5–10: 其他功能\r
\r
```bash\r
clawlock soul --update-baseline    # Drift 基准更新\r
clawlock discover                  # 安装发现 (~/.openclaw / ~/.zeroclaw / ~/.claude)\r
clawlock redteam URL --deep        # 红队 (10 插件 × 8 策略) ⚠️ 需 promptfoo / npx\r
clawlock mcp-scan ./src            # MCP 深度代码扫描(含依赖漏洞 / React2Shell 检查)\r
clawlock agent-scan --code ./src   # OWASP ASI 14 类别(含依赖漏洞 / React2Shell 检查)\r
clawlock agent-scan --code ./src --llm           # 追加 LLM 语义评估层\r
```\r
\r
> **依赖说明:** 除 `clawlock redteam` 需要 Node.js,并通过 `promptfoo` 或 `npx` 运行外,所有其他命令仅需 `pip install clawlock`,零外部二进制依赖。\r
> `ai-infra-guard` 目前仅作为 `mcp-scan` 的可选增强,且只有在系统中安装了该二进制并显式传入 `--model` 与 `--token` 时才会启用。\r
\r
---\r
\r
## Feature 11: 扫描历史\r
\r
```bash\r
clawlock history            # 查看最近 20 条扫描记录\r
clawlock history --limit 50 # 查看最近 50 条\r
```\r
\r
自动记录每次 `clawlock scan` 的评分、高危数、需关注数和设备指纹,持久化存储到 `~/.clawlock/scan_history.json`。支持趋势对比(📈 评分提升 / 📉 评分下降)。\r
\r
## Feature 12: 持续监控\r
\r
```bash\r
clawlock watch                    # 每 5 分钟扫描一次,Ctrl+C 停止\r
clawlock watch --interval 60      # 每 60 秒一次\r
clawlock watch --count 10         # 扫描 10 轮后自动停止\r
```\r
\r
定期重扫配置 Drift + 记忆文件 Drift + 进程变化,发现高危变化时即时告警。适合部署后长期监控。\r
\r
---\r
\r
## Claw 产品对话输出规则\r
\r
**以下规则适用于 OpenClaw、ZeroClaw、Claude Code 与其他兼容 Claw 产品中的 skill 对话。安全判定以本地 ClawLock CLI 输出为准。**\r
\r
### 单一事实来源原则\r
\r
- **ClawLock 负责做安全评估,LLM 不负责重判。**\r
- 在 Claw 产品对话里,LLM 只负责解释影响、可能后果、修复优先级和对普通用户的操作含义。\r
- 不得重新计算、放大、减弱或“归一化” ClawLock 的结论、评分、等级、严重程度或发现列表。\r
- 如果当前 CLI 输出里没有某个字段,就不要自行推断、补齐或伪造一个替代值。\r
\r
### 各功能的输入优先级\r
\r
- **Feature 1 全量扫描:** 优先使用 `clawlock scan --format json`\r
  - 当前 JSON 稳定提供:`time`、`adapter`、`device`、`score`、`grade`、`domain_grades`、`domain_scores`、`findings`\r
- **Feature 2 单体审计:** 优先使用默认 text 输出作为“最终结论”的来源\r
  - 当前 `clawlock skill --format json` 只返回 findings 列表,不包含给用户看的结论语气\r
- **Feature 3 precheck / Feature 5 drift / 其他聚焦命令:** 在没有结构化总结格式前,默认 text 输出就是规范结果\r
- 如果 text 和 JSON 同时可用:结论以 text 为准,JSON 只用于补充结构化发现细节\r
\r
### Claw 产品面向用户的输出契约\r
\r
统一分成两段:\r
\r
```md\r
# ClawLock 结果\r
\r
{只引用或转述 ClawLock 已经给出的事实}\r
\r
### 影响分析\r
\r
{LLM 面向普通用户解释:会发生什么、最该先处理什么、接下来怎么做}\r
```\r
\r
规则如下:\r
\r
- `ClawLock 结果` 里只有在 CLI 明确给出时,才可以出现评分、等级、结论、发现计数\r
- 对于全量扫描,可以展示 `domain_grades` 和 `domain_scores`,因为 `scan --format json` 里确实存在\r
- 不得自行补出“每一步计数”“每个安全域的严重/高危/警告总数”“固定 Step 1-8 表格”等当前输出里不存在的字段\r
- 不要把终端框线、进度条、颜色标记或大段原始 CLI 文本直接搬进对话\r
- 不要把多个命令的输出再拼成一份新的“综合总报告”;每个命令各自保持原结论\r
\r
### 各功能的转述方式\r
\r
- **Feature 1 全量扫描:** 先引用 ClawLock 给出的 `score`、`grade`、可用的安全域评级与最高优先级发现,再补充影响分析\r
- **Feature 2 / 3 / 5 单目标检查:** 先引用 ClawLock 的结论句,再用通俗语言解释影响\r
- **如果命令明确说某项检查被跳过或暂不可用,必须保留原语义。** 不得把“skipped”说成“passed”,也不得把“发现风险”淡化成“仅需关注”\r
\r
### 允许与禁止\r
\r
| ✅ 允许 | ❌ 禁止 |\r
|---------|---------|\r
| 原样引用 ClawLock 已给出的结论 / 评分 / 等级 | 重新算出另一套评分、等级或总判断 |\r
| 用通俗语言解释影响 | 添加 ClawLock 没报告的发现 |\r
| 帮用户排优先级 | 删除发现,或弱化已报告的严重程度 |\r
| 提醒静态分析局限、说明某项检查被跳过 | 编造表格、计数或步骤摘要 |\r
\r
---\r
\r
## 统一写作规则\r
\r
- **全部面向用户输出使用用户当前语言**(CVE ID、代码、命令除外)\r
- 面向普通用户,少用专业词汇,用「会带来什么后果」「建议怎么做」的语气\r
- 只使用 Markdown 标题、表格、引用和短段落;不使用 HTML 或复杂布局\r
- 每个表格单元格尽量只写 1 句;最多「问题 + 建议」合并一句\r
- 不在表格内换行成段\r
- 不混用长句、项目符号清单和额外总结\r
- 能用日常话说清楚的地方,不使用「暴露面」「攻防面」等抽象术语;改用「别人更容易从外网访问你的系统」这类描述\r
- 不使用「绝对安全」「可放心使用」「已彻底解决」「没有任何风险」等绝对措辞\r
- 单项审计(Feature 2)只输出简洁结论,**不展开成全量报告**\r
\r
---\r
\r
## 语言适配\r
\r
本 SKILL.md 为中文版本,配套英文版 [SKILL_EN.md](SKILL_EN.md)。输出语言跟随用户语言:用户用中文提问,输出中文;用户用英文提问,输出英文。CVE ID、命令、代码等专有名词保持原文。\r
\r
## 扫描启动提示\r
\r
在开始任何扫描(Feature 1–10)前,必须先输出一行启动提示:\r
\r
```\r
🔍 ClawLock 正在检测 {目标} 安全性,请稍候...\r
```\r
\r
将 `{目标}` 替换为实际内容(如 `Claw 环境`、`my-skill`、`当前工作区`)。\r
\r
---\r
\r
## 能力边界声明\r
\r
本 skill 执行**静态分析**,无法:\r
- 检测纯运行时的恶意行为\r
- 保证不存在未知漏洞\r
- 执行真实攻击或确认漏洞可利用性\r
- 读取系统隐私目录、会话记录、媒体文件\r
\r
v1.1 起,MCP 深度扫描和 Agent-Scan 使用内建 Python 引擎(正则 + AST 污点追踪),无需安装 ai-infra-guard 二进制。内建引擎基于已知模式匹配,对复杂的跨函数语义漏洞覆盖有限;如需 LLM 驱动的语义级分析,可通过 `--llm` 选项启用(需要 API key)。\r
\r
所有结论均为「当前检查范围内」的最佳评估。\r
安全使用建议
This SKILL.md largely matches the stated purpose (a security scanner) but contains several red flags you should consider before installing or running it: - Inconsistency: The registry lists no required binaries or env vars, but the SKILL.md expects python>=3.9, a 'clawlock' pip package/binary, Node.js for optional red-team tests, and may use an LLM API key. Ask why the registry metadata is empty or incorrect. - High-impact actions: The instructions include network version checks, pip install -U clawlock, and fetching & overwriting local SKILL.md files from GitHub. Those will modify your environment — only allow them after you verify the exact commands and trust the package/repo. - Data flow: By default scans are local, but optional features (--llm, red-team) will send truncated code snippets or prompt payloads externally. If you have sensitive secrets in configs, avoid enabling --llm or red-team, or run the skill in an isolated environment. - Safer usage tips: run in an isolated VM/container or non-production machine; first run with offline flags (--no-cve --no-redteam and avoid --llm) to see local-only behavior; require explicit manual updates rather than in-conversation automatic pip/GitHub updates; inspect the PyPI package and the GitHub repo (verify publisher/trust) before permitting installs; never provide an LLM API key unless you understand which snippets are sent. If you want to proceed, ask the skill to report exactly which online capabilities it will run this session and perform updates manually (not automatically) the first time.
功能分析
Type: OpenClaw Skill Name: clawlock Version: 2.3.0 The clawlock skill bundle (SKILL.md, SKILL_EN.md) describes a comprehensive security and hardening toolkit that possesses high-risk capabilities, including a self-update mechanism that instructs the AI agent to fetch and replace its own instruction file (SKILL.md) from a GitHub repository (github.com/g1at/ClawLock). It also empowers the agent to modify application configurations, MCP server settings, and environment variables through an 'LLM-Assisted Hardening' workflow. While these actions are aligned with the tool's stated purpose and include directives for user consent, the combination of remote instruction updates and automated file modification presents a significant attack surface for potential prompt injection or supply chain compromise.
能力标签
crypto
能力评估
Purpose & Capability
The SKILL.md describes a legitimate security scanner/hardening tool that reasonably needs to read configs, find installations, and optionally call CVE/LLM/red-team services. However, the registry entry lists no required binaries, env vars, or install steps while the SKILL.md metadata explicitly references python>=3.9, a pip package ('clawlock') and a 'clawlock' binary. That mismatch between declared registry requirements and the skill's own instructions is inconsistent and unexplained.
Instruction Scope
The runtime instructions tell the agent to read Claw configuration files and system locations, perform local scans, optionally truncate and send code snippets to an external LLM if --llm is used, run optional promptfoo red-team tests (requires Node.js) and perform network version checks against PyPI/GitHub. They also instruct the agent to perform package updates (pip install -U clawlock) and to fetch and overwrite local SKILL.md files from GitHub. Those actions grant the skill broad discretion to modify local files and to send truncated code/prompts externally; the SKILL.md contains privacy promises but the agent instructions still allow powerful I/O and network behavior that must be explicitly authorized by the user.
Install Mechanism
No formal install spec is provided in the registry (instruction-only), yet the SKILL.md instructs using pip install (PyPI) and pulling skill files from GitHub, then running the installed binary. Installing from PyPI is a common pattern, but the skill also instructs to overwrite local skill files fetched from GitHub and to run updates inside the conversation — operations that write to disk and execute code. Those behaviors are higher risk and should be surfaced before allowing automatic execution.
Credentials
The registry declares no required environment variables or credentials, but the SKILL.md references an optional CLAWLOCK_CLOUD_URL and explicitly relies on user-provided LLM API keys when --llm is enabled. The skill will read local Claw config files (which may contain secrets) as part of scanning. The combination of reading potentially sensitive local configs plus optional external LLM/red-team uploads (if enabled) is powerful; the skill does not declare these env/credential needs in the registry metadata, which is disproportionate / inconsistent.
Persistence & Privilege
The skill is not always-included and does not request autonomous invocation privileges, which is good. However, its instructions allow it to install/upgrade the clawlock package and replace local skill files when the user consents. That grants the skill significant capability to change local skill code and installed packages; such actions should require explicit, informed user approval and preferably manual confirmation rather than fully automated in-conversation updates.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install clawlock
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /clawlock 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v2.3.0
ClawLock 2.3.0 - Version bumped from 2.2.1 to 2.3.0. - No functional or documentation changes detected in this update.
v2.2.1
ClawLock 2.2.1 introduces improved Agent 安全集成和扫描体验。 - scan 默认已纳入 Agent 安全的配置层检查(无需单独 agent-scan)。 - 明确区分 Agent 配置扫描与代码层审计,代码层需用 clawlock agent-scan --code 启动。 - 小幅完善文档描述,提升安全功能边界和分类说明准确性。 - 版本号和元数据自 2.1.1 → 2.2.1。
v2.1.1
ClawLock v2.1.1 - 更新元数据,仅提升版本号,未检测到文件内容变动 - 与上版(2.1.0)功能一致,无新功能或行为变化 - 适配 openclaw, zeroclaw, claude-code, 通用 claw,跨平台要求保持不变
v2.1.0
ClawLock v2.1.0 发布,新增升级预检机制,提升安全扫描的及时性和可控性。 - 新增“版本更新预检”:在任何扫描/加固前,自动检测 clawlock 本体与 skill 文件是否有新版本,并由 skill 内自动更新。 - 用户可选择是否先自动升级本体与 skill 文件,或继续用现有版本;升级失败或网络不可用时会明确提示并降级处理。 - 变更涉及 PyPI 与 GitHub 源合法性校验,确保每次安全检查基于最新规则和引擎。 - 其余安全扫描、风险识别、降级与隐私边界等流程无其他逻辑变化。
v2.0.0
ClawLock 2.0.0 — 重大升级,全面加强本地分析与降级容错 - 本地静态分析全面升级至 63 种风险模式,提升恶意检测覆盖度 - LLM 红队测试支持 Node.js + promptfoo / npx 双路径调用,更好适配实际环境 - 安全扫描并发执行 7 步核心检测,红队测试作为可选追加第 8 步 - “降级与跳过”规则更严格:明确告知哪些功能因依赖/权限/网络被跳过,避免误报“安全” - 支持离线优先写法,灵活控制云端/本地能力与数据收集范围 - 文档重构,触发边界、隐私声明、执行提醒均更细致,确保用户知情和可控
v1.3.0
ClawLock v1.3.0 - 新增 bins 字段,明确主二进制为 clawlock,配合 autoAllowSkills 可自动授权。 - metadata.version 升级为 1.3.0。 - 其余 skill 功能、使用说明、触发边界与隐私声明未变。
v1.2.0
ClawLock 1.2.0 — 综合安全扫描与加固工具,支持全平台。 - 全新 SKILL.md,系统梳理 12 大安全检测与加固功能及触发边界说明。 - 明确各安全扫描步骤的风险判定标准、输出格式及依赖要求。 - 支持云端与本地多项情报查询,完善韧性规则,失败自动降级本地分析。 - 新增红队测试、Agent-Scan、MCP 深度扫描等多项功能细节及隐私保护声明。 - 精确区分扫描启动条件,防止误触发普通开发和调试流程。 - 优化语言适配和输出规范,中英文文档对应输出,增强用户体验。
元数据
Slug clawlock
版本 2.3.0
许可证 MIT-0
累计安装 0
当前安装数 0
历史版本数 7
常见问题

ClawLock 是什么?

ClawLock — 综合安全扫描、红队测试与加固工具,支持全平台。 当用户明确要求安全扫描、安全体检、安全加固时触发: 「开始安全体检」「安全扫描」「检查 skill 安全」「安全加固」「探测实例」 「scan my claw」「security check」「drift detection」「red team... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 206 次。

如何安装 ClawLock?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install clawlock」即可一键安装,无需额外配置。

ClawLock 是免费的吗?

是的,ClawLock 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。

ClawLock 支持哪些平台?

ClawLock 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 ClawLock?

由 g0at(@g1at)开发并维护,当前版本 v2.3.0。

💬 留言讨论