Install
openclaw skills install clawlockClawLock — 综合安全扫描、红队测试与加固工具,支持全平台。 当用户明确要求安全扫描、安全体检、安全加固时触发: 「开始安全体检」「安全扫描」「检查 skill 安全」「安全加固」「探测实例」 「scan my claw」「security check」「drift detection」「red team」「红队测试」 「React2Shell」「agent-scan」「发现安装」「凭证权限」 Do NOT trigger for general coding, debugging, or normal Claw usage.
openclaw skills install clawlock综合安全扫描、红队测试与加固工具。支持 OpenClaw · ZeroClaw · Claude Code · 通用 Claw。 运行于 Linux · macOS · Windows · Android (Termux)。
pip install clawlock # 安装
clawlock scan # 全面安全扫描
clawlock discover # 发现所有安装实例
clawlock precheck ./SKILL.md # 新 skill 导入预检
clawlock harden --auto-fix # 加固(自动修复真正安全的本地变更)
clawlock scan --format html # HTML 报告
作为 Claw Skill 安装:复制本文件到 skills 目录,并在对应 Claw 产品对话中发起安全检查请求。
触发后按以下分类对号入座,不要跨类执行:
| 用户意图 | 执行功能 | 外部依赖 |
|---|---|---|
| 全面安全体检 / health check | Feature 1: 全量扫描 | 无 |
| 某个 skill 是否安全 / 安装前审计 | Feature 2: Skill 单体审计 | 无 |
| 导入新 skill 前检查 | Feature 3: Skill 导入预检 | 无 |
| 加固 / 收紧配置 | Feature 4: 安全加固向导 | 无 |
| SOUL.md / Memory 文件 drift | Feature 5: Drift 检测 | 无 |
| 发现系统上的安装 | Feature 6: 安装发现 | 无 |
| 红队 / jailbreak 测试 | Feature 7: LLM 红队测试 | ⚠️ 需 Node.js + promptfoo / npx |
| MCP 服务器是否安全 | Feature 8: MCP 深度扫描 | 无(内建引擎) |
| React2Shell / CVE-2025-55182 | Feature 9: 依赖漏洞检查(并入代码扫描) | 无 |
| Agent 多智能体安全扫描 | Feature 10: Agent-Scan | 无(内建引擎) |
| 查看扫描历史趋势 | Feature 11: 扫描历史 | 无 |
| 持续监控模式 | Feature 12: 持续监控 | 无 |
不要将普通的 Claw 使用、项目调试、依赖安装当作触发本 skill 的理由。
绝大多数检查在本地运行。只有在对应功能被启用时,才会发起以下网络请求:
| 请求场景 | 发送数据 | 绝不发送 | 依赖 |
|---|---|---|---|
| CVE 情报查询 | 产品名(固定字符串)+ 版本号 | 无文件内容、无凭证、无会话记录 | 无(内建) |
| Skill 威胁情报查询 | skill 名称 + 来源标签 | 无代码内容、无用户数据 | 无(内建) |
| Agent-Scan LLM 语义评估(可选) | 代码片段(截断到 8K 字符) | 无完整源码、无凭证 | 需 --llm + API key |
| promptfoo 红队测试(可选) | 测试 Prompt 载荷 | 无本地文件 | 需 Node.js,并通过 promptfoo 或 npx 运行 |
离线优先写法:
clawlock scan --no-cve --no-redteamclawlock skill /path/to/skill --no-cloud--llm,Agent-Scan 不会发起 LLM 请求在 Claw 产品对话里,必须明确告诉用户:本次哪些在线能力实际运行了,哪些被跳过了,哪些暂不可用。
云端地址可自定义:export CLAWLOCK_CLOUD_URL=https://your-instance。
在实际调用 clawlock 前,先做以下最小核对:
clawlock 就是预期安装版本,不要误用同名脚本或旧版本二进制。在进入任何安全扫描、导入预检、加固或 drift 检查前,默认先检查 clawlock 在 PyPI 上是否有新版本,以及 GitHub 仓库中的最新 skill 文件是否比本地更新:
clawlock version --check-update --json --skill-path /path/to/SKILL.md
执行规则:
clawlock 本体版本以 PyPI 最新版本 作为唯一事实来源。main 分支中的最新 skill 文件 为准:
https://github.com/g1at/ClawLock/blob/main/skill/SKILL.mdhttps://github.com/g1at/ClawLock/blob/main/skill/SKILL_EN.mdclawlock 本体更新动作:执行 pip install -U clawlockskill/SKILL*.md,替换本地 skill 文件后再继续隐私边界:
在 Claw 产品对话场景中,遇到以下情况时必须优雅降级,并把原因写清楚:
--llm、缺少 API key,或模型请求失败:保留本地 Agent-Scan 结果,并明确写「LLM 语义评估未执行」或失败原因。并发执行 8 个核心安全域扫描;默认 scan 已纳入 Agent 安全的配置层检查。
如需代码层 Agent 审计,额外运行 clawlock agent-scan --code <path>。如果提供了 --endpoint 且没有传
--no-redteam,ClawLock 会在核心扫描完成后追加可选的第 9 步红队测试,
最后输出一份统一报告。
clawlock scan # 自动识别平台
clawlock scan --adapter openclaw --format json # 指定适配器 + JSON
clawlock scan --mode monitor # 仅报告不阻断
clawlock scan --mode enforce # 发现高危 exit 1
clawlock scan --format html -o report.html # HTML 报告
clawlock scan --endpoint http://localhost:8080/v1 # 含红队测试
clawlock scan --no-cve # 离线模式
读取 Claw 配置文件,执行内建审计(如有),再叠加 ClawLock 自研规则检查:
| 风险项 | 触发条件 | 等级 |
|---|---|---|
| Gateway 鉴权 | gatewayAuth: false | 🔴 严重 |
| 文件访问范围 | allowedDirectories 含 / | 🟡 警告 |
| 浏览器控制 | enableBrowserControl: true | 🟡 警告 |
| 网络白名单 | allowNetworkAccess: true 无白名单 | 🟡 警告 |
| 服务绑定 | server.host: 0.0.0.0 | 🔴 严重 |
| TLS 状态 | tls.enabled: false | 🟡 警告 |
| 操作审批 | approvalMode: disabled | 🟡 警告 |
| 速率限制 | rateLimit.enabled: false | 🟡 警告 |
| 硬编码凭证 | 正则匹配 11 种 API Key / Token 格式 | 🔴 严重 |
| 危险环境变量 | NODE_OPTIONS / LD_PRELOAD / DYLD_INSERT_LIBRARIES 等 11 个 | 🟠 高危 |
| 会话保留 | sessionRetentionDays > 30 | 🔵 信息 |
解读规则: 将内建审计发现视为配置风险提示,不直接映射为「确认的严重攻击」。用「存在风险,建议收紧」的语气。
输出要求: 安全项与风险项都要展示。安全项示例:✅ | Gateway 鉴权 | 已开启,外部无法直接连接。 每一项只写「当前状态 + 可能后果 + 建议」,不超过一行。不要混入来自 Step 2-8 的内容。
跨平台检测运行中的 Claw 进程和对外监听的端口(Linux: ps+ss, macOS: ps+lsof, Windows: tasklist+netstat)。
跨平台检查凭证文件/目录是否对其他用户可读(Unix: stat 位, Windows: icacls ACL)。
整合云端威胁情报 + 本地 63 模式静态分析。
数据发送:仅 skill 名称 + 来源标签。不发送代码内容。
| verdict | 处理方式 |
|---|---|
safe | 标记安全,继续本地扫描确认 |
malicious | 🔴 严重,记录原因 |
risky | 结合本地分析判断等级 |
unknown | 仅执行本地静态扫描 |
| 请求失败 / 超时 / 非 200 / 空内容 / 无效 JSON | 视为不可用,继续本地扫描并标注「云端情报暂不可用」 |
韧性规则: 云端失败不阻断扫描。一个 skill 失败不阻止其他 skill。
🔴 严重(确认恶意):凭证外传(curl/wget) · 反弹Shell(bash/nc/Python/mkfifo) · 挖矿 · 批量删除 · chmod 777 · 提示词注入(覆盖/劫持/越狱/中文) · 混淆载荷(base64→shell) · 零宽字符 · Shell 命令嵌套混淆(sh -c/bash -c/cmd /c 多层包装绕过检测)
🟠 高危:Unicode 转义混淆 · 硬编码凭证 · AI API 密钥 · 危险环境变量export · Cron持久化 · DNS外传 · 用户输入直接进eval · 递归删除系统目录
🟡 警告(高权限但可能合理):eval/exec · subprocess · 凭证类环境变量 · 隐私目录访问 · 系统敏感文件 · 外部HTTP请求 · 动态模块导入 · ctypes/cffi · pickle反序列化 · 不安全YAML加载 · socket服务端 · webhook · 系统服务注册
判断原则: 升级到 🔴 严重必须有明确越权、外传、破坏、恶意迹象之一。eval、subprocess、API 密钥读写单独存在时只判 🟡 警告。结合「声明用途 × 实际行为 × 是否外传」综合判断。
输出要求:
其余 {N} 个 ✅ 当前未发现明确高风险扫描 SOUL.md / CLAUDE.md / HEARTBEAT.md / MEMORY.md / memory/*.md:
~/.clawlock/drift_hashes.json 基准对比安全守则: 不读取、不枚举相册 / ~/Documents / ~/Downloads / 聊天记录 / 日志正文。不执行 sudo / TCC 绕过 / 沙箱逃逸。仅读配置元数据、权限状态、文件哈希。
扫描 MCP 配置文件,检测:
| 风险项 | 等级 |
|---|---|
| 绑定 0.0.0.0(对外网暴露) | 🔴 严重 |
| 连接非 localhost 远程端点 | 🟡 警告 |
| env 中含凭证字段(明文) | 🔴 严重 |
| env 中含危险变量 (NODE_OPTIONS 等) | 🟠 高危 |
| 参数篡改 (Parameter Tampering, ASR≈47%) | 🔴 严重 |
| 函数劫持 (Function Hijacking, ASR≈37%) | 🟠 高危 |
| 隐式触发器 (Implicit Trigger, ASR≈27%) | 🔴 严重 |
| Rug Pull 迹象 | 🟡 警告 |
| 工具覆盖 (Tool Shadowing) | 🟠 高危 |
| 跨域权限提升 | 🟡 警告 |
检测覆盖所有 LLM 可见字段:description · annotations · errorTemplate · outputTemplate · inputSchema 参数描述。
查询 ClawLock 云端漏洞情报库。
韧性规则: 接口不可用时,明确提示「本次未完成在线漏洞匹配,建议稍后重试」,不输出「未发现漏洞」。漏洞超过 8 个时只列最严重的 8 个,表后补充「另有 N 个,建议升级到最新版」。
9 个 agent 专项插件 × 8 种攻击策略(含编码绕过)。
⚠️ 外部依赖: 此功能需要 Node.js 环境,并通过
promptfoo或npx运行(例如npm install -g promptfoo,或直接使用npx promptfoo@latest)。如果当前环境无法安装,请跳过此步骤,不影响其余 8 个核心安全域的完整性。Skill 环境中通常无 Node.js,此步会自动跳过并提示原因。
clawlock skill /path/to/skill-dir
clawlock skill /path/to/SKILL.md --no-cloud
Step 1 — 判断是否需要云端查询:
| Skill 来源 | 处理方式 |
|---|---|
local / github | 跳过云端查询,直接本地审计 |
clawhub 或其他托管仓库 | 先查询云端情报,再叠加本地审计 |
云端返回 unknown / 请求失败 | 回退到本地审计 |
Step 2 — Skill 信息收集:
收集最少量上下文用于审计(不生成长篇背景分析):
Step 3 — 本地静态分析: 使用 63 模式引擎确定性扫描,判断原则同 Feature 1 Step 4。
无高风险时:
经检测暂未发现高风险问题,可继续评估后安装。
有需关注但无明确恶意时:
发现需关注项,但当前未见明确恶意证据。该 skill 具备
{具体能力},主要用于完成{SKILL.md 声明用途};建议仅在确认来源可信、权限范围可接受时使用。
有确认风险时:
发现风险,不建议直接安装。该 skill
{主要风险描述},超出了声称的功能边界。建议先下线当前版本,确认来源和代码后再决定。
禁止绝对措辞: 不使用「绝对安全」「可放心使用」「没有任何风险」。结论限定为「当前静态检查范围内」的评估。
当用户引入新的 SKILL.md 时,自动执行安全预检,及时告知用户风险。
clawlock precheck ./new-skill/SKILL.md
6 维度检测:
sh -c/bash -c/cmd /c 嵌套后再匹配clawlock harden # 交互式
clawlock harden --auto # 应用安全动作并输出人工指导
clawlock harden --auto-fix # 自动修复真正安全的本地变更
clawlock harden --from-scan --auto-fix # 仅处理上次 scan 报告的高危项
clawlock harden --verify # 加固后重新校验、生成差异报告
clawlock harden --rollback # 按备份回滚最近一次加固动作
| ID | 措施 | 体验影响 | 需确认 | Auto-fix | LLM 可协助修复 |
|---|---|---|---|---|---|
| H001 | 限制文件访问到工作区 | ⚠️ 跨目录 skill 失效 | 是 | 否 | ✅ |
| H002 | 开启 Gateway 鉴权 | ⚠️ 外部工具需重配 token | 是 | 否 | ✅ |
| H003 | 缩短会话日志保留 | ⚠️ 历史不可查 | 是 | ✅ 是 | — |
| H004 | 关闭浏览器控制 | ⚠️ 依赖浏览器的 skill 停用 | 是 | 否 | ✅ |
| H005 | 配置网络白名单 | 无影响 | 否 | 否 | ✅ |
| H006 | 审核 MCP 配置 | 仅指导 | 否 | 否 | ⚠️ 协助核查 |
| H007 | 建立提示词/记忆基准 | 无影响 | 否 | ✅ 是 | — |
| H008 | 启用操作审批 | ⚠️ 每次高危操作需确认 | 是 | ✅ 是 | — |
| H009 | 收紧凭证目录权限 | 无影响 | 否 | ✅ 是 | — |
| H010 | 配置速率限制 | 无影响 | 否 | 否 | ✅ |
| H011 | 禁止下载即执行 / 运行时远程安装 | ⚠️ 自举安装脚本可能失效 | 是 | 否 | ⚠️ 协助核查 |
| H012 | 禁止 Windows LOLBins / 脚本宿主 | ⚠️ Windows 管理脚本可能失效 | 是 | 否 | ⚠️ 协助核查 |
| H013 | 清理持久化落点 | ⚠️ 后台任务可能停止 | 是 | 否 | ⚠️ 协助核查 |
| H014 | 禁止隧道 / 反向代理 | ⚠️ 远程调试隧道可能失效 | 是 | 否 | ⚠️ 协助核查 |
| H015 | 收紧 MCP 鉴权 / 绑定 / CORS | ⚠️ 外部 MCP 工具可能需重配 | 是 | 否 | ✅ |
| H016 | 禁止用户控制动态模块加载 | ⚠️ 热加载插件可能失效 | 是 | 否 | ⚠️ 协助核查 |
| H017 | 对提示词与凭证日志脱敏 | ⚠️ 调试日志会变少 | 是 | 否 | ✅ |
| H018 | 清理不安全 prompt / skill 指令 | ⚠️ 不安全自动化措辞会失效 | 是 | 否 | ✅ |
规则:需二次确认的措施必须先向用户展示体验影响(黄色),等待明确 y 后才执行。默认 No。
执行说明: 加固向导按「可直接自动修复 / LLM 辅助可修复 / 仅给指导」分组展示措施。H003 / H007 / H008 / H009 会执行本地自动修复(写入前会备份到 ~/.clawlock/backups/<timestamp>/ 并记录到 ~/.clawlock/hardening_log.json,可通过 clawlock harden --rollback 回滚)。其余措施多为配置或运维变更,若未真正改动,不应描述为"已应用"。
对于上表 Auto-fix = 否 的项,Claw LLM 可使用自身的文件编辑能力协助完成剩余加固。按以下五步执行,不得跳过任何一步:
Step 1 — 获取结构化发现
clawlock scan --format json
从输出的 findings 数组按 level ∈ {critical, high, medium} 过滤出待修复项,保留 title / location / detail 三个字段作为后续修复依据。
Step 2 — 优先执行 CLI 自动修复
clawlock harden --from-scan --auto-fix
这一步会基于 Step 1 的结果,只对命中的发现执行 H003 / H007 / H008 / H009 自动修复,并生成备份与日志。先跑这一步再让 LLM 介入,避免 LLM 重复处理 CLI 已能解决的项。
Step 3 — LLM 按发现定位配置
对每个剩余的 guidance-only 发现,依据 location 字段找到目标文件。常见目标:
~/.openclaw/config.* · ~/.zeroclaw/config.* · ~/.claude/settings.json~/.claude/mcp_servers.json 或项目级 .mcp.json)必须先 Read 再改,不要盲写。 如果文件不存在或无权限,跳过并说明原因。
Step 4 — 展示"当前 → 目标 + 体验影响"并等用户确认
每个拟修改项按以下格式展示给用户,默认 No:
- 文件:{path}
- 当前:{current_value}
- 目标:{target_value}
- 修复依据:{finding title}({finding level})
- 体验影响:{上表对应的 UX 影响}
- 是否应用?(y/N)
用户逐项回答 y 才执行。批量 y 需用户明确表达。
Step 5 — 应用并二次验证
应用后运行:
clawlock harden --verify
--verify 会重新跑 scan_config 与 scan_credential_dirs,对比加固前后的 critical / high 数量并输出差异报告。如果剩余风险未下降,向用户说明原因(常见:文件未落盘 / 写到错路径 / 字段名写错),不得将 Step 5 省略。
~/.clawlock/backups/<timestamp>/ 并在 ~/.clawlock/hardening_log.json 追加一条记录(measure_id / files_changed / backup_path),使 clawlock harden --rollback 能按统一入口回滚sudo / chmod -R 777 / 跨用户目录写入 / 系统级服务安装 / 关闭 SELinux 或 AppArmor${GATEWAY_TOKEN}),严禁将实际值写进 config 或对话clawlock scan 的 findings 采取行动;不得自行扩大修复范围,不得编辑 findings 未命中的文件| 措施 | LLM 的具体动作 |
|---|---|
| H001 | 修改 Claw 配置 allowedDirectories,用当前工作区绝对路径替换 / 或 ~ |
| H002 | 在 Claw 配置里把 gatewayAuth 改为 true,并让用户填入 token env 变量名(不是明文) |
| H004 | 设 enableBrowserControl: false;如存在依赖浏览器的 skill,先提醒用户这些 skill 会停用 |
| H005 | 为 allowNetworkAccess: true 补出明确的 allowedDomains 白名单(让用户逐条确认) |
| H006 | 按 Feature 1 Step 6 的 10 个 MCP 风险信号逐条核对,列出差异后让用户决定 |
| H010 | 在 Claw 配置里加 rateLimit: { enabled: true, requestsPerMinute: 60 } |
| H011–H014 | 协助搜索 skill / script / cron / launchctl / 计划任务 中的可疑持久化或隧道命令,列给用户确认后移除(不自动删) |
| H015 | 修改 MCP server JSON:host 改为 127.0.0.1、启用鉴权、限制 CORS origin |
| H016 | 搜索 skill 中的 import(user_input) / importlib.import_module(user_input) / require(user_input) 并引导收紧 |
| H017 | 在日志 / 提示词配置里启用脱敏开关,或对敏感字段加 mask |
| H018 | 按 scan_skill 报告的行号,将不安全的措辞改写为合规表达(如去掉"绕过确认""跳过审计"字样) |
不在此表的项视为仅给指导,LLM 不得尝试自动改写。
clawlock soul --update-baseline # Drift 基准更新
clawlock discover # 安装发现 (~/.openclaw / ~/.zeroclaw / ~/.claude)
clawlock redteam URL --deep # 红队 (10 插件 × 8 策略) ⚠️ 需 promptfoo / npx
clawlock mcp-scan ./src # MCP 深度代码扫描(含依赖漏洞 / React2Shell 检查)
clawlock agent-scan --code ./src # OWASP ASI 14 类别(含依赖漏洞 / React2Shell 检查)
clawlock agent-scan --code ./src --llm # 追加 LLM 语义评估层
依赖说明: 除
clawlock redteam需要 Node.js,并通过promptfoo或npx运行外,所有其他命令仅需pip install clawlock,零外部二进制依赖。
clawlock history # 查看最近 20 条扫描记录
clawlock history --limit 50 # 查看最近 50 条
自动记录每次 clawlock scan 的评分、高危数、需关注数和设备指纹,持久化存储到 ~/.clawlock/scan_history.json。支持趋势对比(📈 评分提升 / 📉 评分下降)。
clawlock watch # 每 5 分钟扫描一次,Ctrl+C 停止
clawlock watch --interval 60 # 每 60 秒一次
clawlock watch --count 10 # 扫描 10 轮后自动停止
定期重扫配置 Drift + 记忆文件 Drift + 进程变化,发现高危变化时即时告警。适合部署后长期监控。
以下规则适用于 OpenClaw、ZeroClaw、Claude Code 与其他兼容 Claw 产品中的 skill 对话。安全判定以本地 ClawLock CLI 输出为准。
clawlock scan --format json
time、adapter、device、score、grade、domain_grades、domain_scores、findingsclawlock skill --format json 只返回 findings 列表,不包含给用户看的结论语气统一分成两段:
# ClawLock 结果
{只引用或转述 ClawLock 已经给出的事实}
### 影响分析
{LLM 面向普通用户解释:会发生什么、最该先处理什么、接下来怎么做}
规则如下:
ClawLock 结果 里只有在 CLI 明确给出时,才可以出现评分、等级、结论、发现计数domain_grades 和 domain_scores,因为 scan --format json 里确实存在score、grade、可用的安全域评级与最高优先级发现,再补充影响分析| ✅ 允许 | ❌ 禁止 |
|---|---|
| 原样引用 ClawLock 已给出的结论 / 评分 / 等级 | 重新算出另一套评分、等级或总判断 |
| 用通俗语言解释影响 | 添加 ClawLock 没报告的发现 |
| 帮用户排优先级 | 删除发现,或弱化已报告的严重程度 |
| 提醒静态分析局限、说明某项检查被跳过 | 编造表格、计数或步骤摘要 |
本 SKILL.md 为中文版本,配套英文版 SKILL_EN.md。输出语言跟随用户语言:用户用中文提问,输出中文;用户用英文提问,输出英文。CVE ID、命令、代码等专有名词保持原文。
在开始任何扫描(Feature 1–10)前,必须先输出一行启动提示:
🔍 ClawLock 正在检测 {目标} 安全性,请稍候...
将 {目标} 替换为实际内容(如 Claw 环境、my-skill、当前工作区)。
本 skill 执行静态分析,无法:
MCP 深度扫描和 Agent-Scan 使用内建 Python 引擎(正则 + AST 污点追踪),零外部二进制依赖。内建引擎基于已知模式匹配,对复杂的跨函数语义漏洞覆盖有限;如需 LLM 驱动的语义级分析,可通过 --llm 选项启用(需要 API key)。
所有结论均为「当前检查范围内」的最佳评估。