{"skill":{"slug":"openclaw-security-patrol","displayName":"openclaw-security-patrol","summary":"OpenClaw 多模式安全巡检工具：默认本地离线扫描，可选联网威胁情报上报。 功能范围：读取系统敏感信息（MAC 地址、主机名、系统日志、完整 Skill 清单）执行本地安全检测；在本机持久化保存扫描报告与安全基线；可选通过 --push 模式将摘要数据上传至 auth.ctct.cn 获取威胁情报评分（需用户...","description":"---\nname: openclaw-security-patrol\ndescription: |\n  OpenClaw 多模式安全巡检工具：默认本地离线扫描，可选联网威胁情报上报。\n  功能范围：读取系统敏感信息（MAC 地址、主机名、系统日志、完整 Skill 清单）执行本地安全检测；在本机持久化保存扫描报告与安全基线；可选通过 --push 模式将摘要数据上传至 auth.ctct.cn 获取威胁情报评分（需用户显式同意）；可选通过 openclaw cron 设置定时任务（绑定 openclaw 基础设施，可跳过）。\n  运行依赖：Node.js v18+。本技能由 Changeway 团队（auth.ctct.cn 运营方）开发。\n  使用场景：用户说\"安全巡检\"、\"安全检查\"、\"安全审计\"、\"巡检\"、\"security audit\"、\"检查安全\"、\"系统安全\"等。\n  触发条件：任何与 OpenClaw 安全检测、审计、巡检相关的请求。\n\nruntime: \"node>=18\"\n\ncredentials: none\n\nprivacy: |\n  本技能有两种运行模式，隐私风险等级不同：\n\n  **模式 1：本地离线模式（默认）**\n  - 零网络请求，零数据上报\n  - 注意：即使在离线模式下，扫描过程也会读取以下敏感系统信息（仅本地分析使用，不离开本机）：MAC 地址、主机名、本机完整 Skill 清单（用于威胁情报项）、系统日志及临时文件路径\n  - 扫描报告、安全基线文件均持久化保存在 ~/.openclaw/ 目录下\n\n  **模式 2：完整检测模式（--push，需明确确认）**\n  - 启用后向 Changeway 威胁情报服务上报隐私敏感数据\n  - 上报内容：MAC 地址、主机名、持久化 agent_id（首次 --push 时生成并永久保存在本机）、本机完整 Skill 清单、本次扫描汇总统计\n  - ⚠️ 长期指纹化风险：agent_id 为持久化唯一标识，多次手动选择完整检测均复用同一 ID，服务端将积累该设备的历史安全档案；Skill 清单揭示本机工具组合，每次上传均与 agent_id 绑定。如对隐私敏感度较高，建议始终使用本地模式\n  - 上报频率：仅在用户单次手动运行时上报一次；定时任务（cron）严禁使用 --push\n  - 防重放机制：每次请求附带 Unix 时间戳 + 随机 nonce，服务端校验时间窗口，防止请求被重放；SHA-256(mac + hostname + timestamp + nonce) 作为请求指纹附在 X-SIGN 头部，但此机制**不构成设备身份认证**（无预共享密钥，服务端无法单凭签名验证请求来源的合法性）\n  - **用户必须在知情同意前提下明确选择此模式**\n\nnetwork_endpoints: |\n  仅在 --push 模式下访问（需要用户显式确认）：\n  - https://auth.ctct.cn:10020/changeway-open/api/pushAuditData\n  - https://auth.ctct.cn:10020/changeway-open/api/skills/assessment\n\n  端点归属：auth.ctct.cn 由本 Skill 的发布方 Changeway 自行运营，非第三方平台。\n  用户在选择 --push 模式前应自行判断是否信任该服务。\n\ndependencies: |\n  运行依赖：\n    必需：Node.js v18+\n    可选：openclaw CLI（用于定时任务管理；若使用定时巡检功能，需依赖 openclaw cron 命令）\n    脚本调用的系统命令（缺失时对应检查项会 SKIP，不影响其他项）：\n      macOS：find、lsof、netstat、ps、last、lastb、grep、awk、cat、sudo\n      Linux：find、ss、lsof、ps、journalctl、last、lastb、grep、awk、cat、sudo\n      Windows：wmic、netstat、tasklist、findstr\n\nsecurity_notes: |\n  命令执行安全性：\n  - 脚本通过 Node.js 内置的 spawnSync（非 exec/execSync）调用系统命令\n  - Unix/Linux：shell 严格禁用（shell: false）；Windows：仅对 .cmd 可执行包装器局部启用 shell: true（Node.js 平台限制），但参数均为硬编码数组，无用户输入，不存在注入风险\n  - 所有 spawnSync 调用（共 17 处）只允许以下固定命令名白名单：\n    openclaw、openclaw-cn、find、pgrep、journalctl、log、ss、ps、lsof、diff、wevtutil、netstat、tasklist、powershell、icacls\n  - 以上命令均为只读系统状态查询，不执行写入、删除或提权操作\n\n  数据处理边界：\n  - 脚本对每项检查生成两个字段：detail（完整命令输出，仅本地落盘，不上传）和 brief（结果摘要）\n  - 上传时明确排除 detail 字段，仅上传 item 和 brief\n\n  本地文件存储：\n  - 扫描报告：~/.openclaw/security-reports/report-YYYY-MM-DD.{txt,json}\n  - Skill 哈希基线：~/.openclaw/security-baselines/（skill-mcp-current.sha256、skill-mcp-baseline.sha256）\n  - 持久化 agent_id：~/.openclaw/.agent-id（仅在 --push 模式首次运行时创建）\n  - 首次运行标记：~/.openclaw/.audit-first-run\n\n  脚本完整性验证：\n  - 脚本头部注释（第 14 行）包含 @integrity sha256 哈希值，可用于确认脚本未被篡改\n  - 安装后核对命令：\n    macOS/Linux：shasum -a 256 scripts/openclaw-hybrid-audit-changeway.js\n    Windows：certutil -hashfile scripts\\openclaw-hybrid-audit-changeway.js SHA256\n  - 将输出结果与脚本注释中的 sha256 值比对，一致则未被篡改\n---\n\n# OpenClaw 安全巡检\n\n## 使用前须知：本技能的功能范围\n\n本技能并非纯本地扫描工具，在运行前请确认你已了解以下行为：\n\n**所有模式均会（包括默认本地模式）：**\n- 读取系统敏感信息：MAC 地址、主机名、系统日志、完整 Skill 清单\n- 在本机持久化保存文件：扫描报告、安全基线（均保存在 `~/.openclaw/`）\n\n**仅在用户选择 --push 模式（需显式同意）时还会：**\n- 生成并永久保存 `agent_id`（`~/.openclaw/.agent-id`），形成持久设备标识\n- 将摘要数据上传至 `auth.ctct.cn`（Changeway 自营服务），可用于多次上传后的设备历史关联\n\n**仅在用户选择设置定时任务时还会：**\n- 通过 `openclaw cron` 添加定时任务，执行与 openclaw 基础设施绑定（**可跳过，不影响手动执行**）\n\n如对上述任一行为有顾虑，可仅使用本地模式并拒绝定时任务设置。\n\n---\n\n## 第一步：检查运行环境\n\n执行命令 `node --version`，确认返回了版本号（如 `v18.x.x` 或更高）。\n\n- 如果命令成功返回版本号 → 继续第二步\n- 如果报错\"command not found\" → 告诉用户：\"安全巡检需要 Node.js 环境，请先安装 Node.js（推荐 v18 以上），安装后再来找我。\"，然后**停止**，不要继续后续步骤\n\n## 第二步：首次使用引导\n\n检查文件 `~/.openclaw/.audit-first-run` 是否存在。\n\n**如果文件已存在** → 跳过本步，直接进入第三步。\n\n**如果文件不存在**（说明是首次使用），向用户发送以下消息，然后等待用户回复：\n\n```\n你好！这是首次使用安全巡检功能。\n\n除了现在手动执行，你还可以设置每天自动巡检，系统会自动检查并把结果推送给你。**（默认执行时间为 23:45，也可以自定义为其他时间）**\n\n请选择：\n1. 设置每天自动巡检（推荐，省心）\n2. 先跑一次看看，以后再说\n```\n\n根据用户回复执行：\n\n- 用户选 **1**（或回复\"设置\"、\"自动\"、\"定时\"等含义）→ 先创建标记文件 `~/.openclaw/.audit-first-run`（内容写 `setup-done`），然后**必须读取** [references/cron-setup.md](references/cron-setup.md) 文件，严格按照其中的步骤帮用户配置定时任务。配置完成后再继续第三步。\n- 用户选 **2**（或回复\"先跑一次\"、\"以后再说\"、\"跳过\"等含义）→ 创建标记文件 `~/.openclaw/.audit-first-run`（内容写 `skipped`），然后继续第三步。\n\n**关于定时任务的硬性要求**：\n- 必须使用 `openclaw cron add` 命令\n- 禁止使用系统 crontab（`crontab -e` 等）\n- 原因：系统 crontab 无法正确初始化 OpenClaw 环境，会导致执行失败\n- ⚠️ 基础设施绑定说明：使用 `openclaw cron` 会将定时执行与 openclaw 基础设施绑定；如不希望依赖此基础设施，可不设置定时任务，改为手动执行\n- **cron 命令中严禁添加 `--push` 参数**：定时任务只以本地离线模式运行，绝不自动向远端上报设备标识\n\n## 第三步：询问检测模式\n\n向用户发送以下消息，然后等待用户回复：\n\n```\n请选择检测模式：\n\n1. 仅本地扫描（默认）— 不联网、不发送任何数据\n   · 所有扫描报告仅保存在本地 ~/.openclaw/security-reports/\n   · 适合离线环境或隐私敏感场景\n   · 无任何网络请求\n\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\n⚠️ 注意：下面的完整检测模式会向外部服务器发送隐私敏感数据\n   请仔细阅读数据上报内容后再决定\n\n2. 完整检测（--push）— 联网查询威胁情报并同步安全评分\n\n   📡 网络请求目标（仅在用户同意时）：\n   - 服务器：https://auth.ctct.cn:10020（Changeway 自营服务器，本 Skill 的发布方，非第三方平台）\n   - 端点1：/changeway-open/api/pushAuditData\n   - 端点2：/changeway-open/api/skills/assessment\n\n   📊 上报的隐私敏感数据包括：\n   · MAC 地址（如 a1:b2:c3:d4:e5:f6）\n   · 主机名（如 MacBook-Pro.local）\n   · agent_id（首次自动生成并永久保存在 ~/.openclaw/.agent-id，后续复用）\n   · 本机已安装的完整 Skill 清单（包含名称、作者、版本、所有者 ID）\n   · 每项安全检查的名称和结果摘要（不包含详细命令输出）\n\n   🔐 请求防重放机制（非设备认证）：\n   · 每次请求附带时间戳 + 随机 nonce，服务端校验时间窗口防重放\n   · X-SIGN = SHA-256(mac + hostname + timestamp + nonce)，用作请求指纹\n   · 注意：此机制无预共享密钥，不构成设备身份认证；服务端以 agent_id 标识设备来源\n   · 完整命令输出和敏感日志仅保存本地，不上传\n\n   ⚠️ 长期指纹化风险与重要限制：\n   · 此选项仅限本次手动执行（一次性）\n   · 定时巡检（cron）中绝不自动启用 --push，防止设备信息被长期自动上报\n   · agent_id 为持久化唯一标识，多次手动选择完整检测均复用同一 ID，服务端将积累该设备的历史安全档案\n   · Skill 清单揭示本机工具组合情况，每次上传均与 agent_id 绑定，形成可追溯的设备指纹\n   · 如对隐私有较高要求，建议始终选择本地模式（选项 1）\n\n   🎯 如同意数据上报，请回复：2 已了解\n```\n\n根据用户回复执行：\n\n- 用户回复 **\"1\"** 或任何\"本地\"、\"离线\"含义 → 记录选择：本地模式，继续第四步\n- 用户回复 **\"2 已了解\"**（必须包含\"已了解\"或\"我已知晓\"等确认短语）→ 记录选择：完整检测，继续第四步\n- 用户只回复 **\"2\"** 但没有确认短语 → 不执行，回复：\"完整检测模式会向 Changeway 服务器上报 MAC 地址、主机名、agent_id 和 Skill 清单等隐私敏感数据，请回复「2 已了解」确认知情同意后再继续。\"\n\n## 第四步：执行安全扫描\n\n根据用户在第三步的选择，执行对应的命令：\n\n- 用户选 **1**（仅本地）→ 执行命令：`node <SKILL_DIR>/scripts/openclaw-hybrid-audit-changeway.js`\n- 用户选 **2**（完整检测）→ 执行命令：`node <SKILL_DIR>/scripts/openclaw-hybrid-audit-changeway.js --push`\n\n其中 `<SKILL_DIR>` 是本 skill 的安装目录（即本 SKILL.md 所在的目录）。\n\n**输出要求**（严格遵守）：\n\n脚本执行完毕后，**不要把脚本的完整控制台输出发给用户**。脚本输出内容很长、包含大量技术细节，直接展示会让用户困惑。\n\n你需要从脚本输出中**只提取以下信息**，然后按下面的格式发给用户：\n\n1. 从输出末尾找到 `PASS X  FAIL X  SKIP X` 这一行，提取 PASS、FAIL、SKIP 的数量\n2. 仅在完整检测模式（--push）下，从输出末尾找到 `系统安全得分:  XX / 100` 这一行，提取得分；本地模式无此行，得分显示为\"—\"\n3. 从输出末尾找到 `详细审计报告已保存至: ...` 这一行，提取报告文件路径\n\n然后**只向用户发送以下内容**（不要多写，不要少写）：\n\n```\n检测统计: PASS X FAIL X SKIP X\n系统安全得分: XX / 100（本地模式下显示为\"—\"）\n\n详细审计报告已保存至: <报告文件路径>\n\n需要我帮你解读这份报告吗？回复\"是\"我会逐项分析每个检查结果，告诉你哪些没问题、哪些需要注意。\n```\n\n然后**停下来等用户回复**，不要自动开始分析。\n\n## 第五步：解读报告（用户要求时才执行）\n\n当用户回复\"是\"、\"要\"、\"分析\"、\"解读\"、\"看看\"等肯定含义时，执行本步。\n\n### 5.1 读取报告文件\n\n读取文件 `~/.openclaw/security-reports/report-YYYY-MM-DD.txt`，其中 YYYY-MM-DD 是今天的日期。\n\n如果文件不存在，告诉用户：\"没有找到今天的报告文件，可能扫描还没完成，请稍后再试。\"\n\n### 5.2 按以下格式逐项输出分析\n\n**输出规则**（非常重要，必须全部遵守）：\n\n- 按报告中 `[1/14]`、`[2/14]`... 的顺序，**逐项**输出分析\n- 每项**独立一段**，不要合并、不要按通过/失败分类\n- 每项用**一段话**说清楚（2-4 句，不超过 100 字），要让不懂技术的人也能看明白\n- 图标含义：✅ = 安全没问题；⚠️ = 有点小问题建议处理；🚨 = 严重问题必须处理\n- PASS 的项简短确认即可，FAIL 和 SKIP 的项要说明**是什么问题**和**怎么解决**\n- 不要输出哈希值、原始日志、进程列表等技术细节，只输出结论和建议\n\n### 5.3 解读模板（严格按此格式输出）\n\n以下是完整的输出模板。你必须按照这个格式来写，内容根据实际报告调整：\n\n```\n## 🔒 安全巡检报告解读\n\n> 扫描时间：YYYY-MM-DD HH:MM\n> 安全评分：XX / 100\n\n---\n\n### 1. 核心运行环境健康度\n（根据报告中 [1/14] 的 PASS/FAIL 状态来写）\n\n### 2. 系统敏感目录防篡改监控\n（根据报告中 [2/14] 的内容来写）\n\n### 3. 网关进程内存凭证隔离检查\n（根据报告中 [3/14] 的内容来写）\n\n... 依次写到第 14 项 ...\n\n---\n\n### 总结\n\n用 2-3 句话概括整体安全状况，列出最需要关注的 1-2 个问题（如果有）。\n```\n\n### 5.4 解读案例（供你参考，实际输出时根据真实报告内容来写）\n\n以下是基于一份真实报告的解读示范，展示每种状态该怎么写：\n\n```\n## 🔒 安全巡检报告解读\n\n> 扫描时间：2026-03-15 17:04\n> 安全评分：79 / 100\n\n---\n\n### 1. 核心运行环境健康度\n✅ 环境扫描通过。有 3 条配置建议（如反向代理信任设置、credentials 目录权限），不影响安全但建议后续优化。\n\n### 2. 系统敏感目录防篡改监控\n✅ 过去 24 小时有 21 个文件变更，主要是 OpenClaw 的会话记录和日志等正常运行产生的文件，未发现异常篡改。\n\n### 3. 网关进程内存凭证隔离检查\n⏭️ 跳过。macOS 系统限制（SIP 保护机制），无法扫描其他进程的环境变量，这是正常的，不用担心。\n\n### 4. 核心配置防篡改与权限基线\n⚠️ 首次运行，还没有建立文件指纹基线，所以无法判断配置是否被篡改。好消息是：核心文件（openclaw.json、paired.json、sshd_config）的访问权限都设置正确。建议后续手动生成基线文件以开启防篡改监控。\n\n### 5. 组件与插件供应链完整性\n⚠️ 检测到 Skill/MCP 组件文件与上次基线不一致。如果你最近安装或更新了插件（如 wechat-macro-daily-report），这属于正常变更。如果没有主动操作过，建议检查是否有未经授权的组件变更。\n\n### 6. 远程访问与爆破攻击监控\n✅ 安全。过去 24 小时没有发现任何 SSH 登录失败记录，说明没有人在尝试暴力破解你的远程登录。\n\n### 7. 网络暴露面与异常进程排查\n✅ 检测到 8 个对外监听端口，均为已知应用（Cursor 编辑器、Surge 代理、clouddesk 远程桌面等），无可疑的陌生服务。CPU 占用正常。\n\n### 8. 自动化任务与后门驻留排查\n✅ 已拉取定时任务列表，目前有 1 个定时任务（微信宏观群日报），是你自己设置的正常任务，未发现可疑的后门任务。\n\n### 9. 高危命令与越权行为审计\n⏭️ 跳过。今天的 OpenClaw 运行日志文件不存在，可能是今天还没有执行过需要记录的操作。不用担心，下次有日志时会自动检查。\n\n### 10. 异常外联与数据外泄监控\n⏭️ 跳过。同上，今天的日志文件不存在，无法扫描网络请求记录。\n\n### 11. 系统凭证与敏感文件访问审计\n⏭️ 跳过。同上，今天的日志文件不存在，无法扫描文件访问行为。\n\n### 12. 硬编码密钥与助记词防泄漏扫描\n✅ 安全。扫描了工作区的所有文件，没有发现明文写死的私钥或助记词。\n\n### 13. 特权提权(Sudo)操作对账审计\n✅ 安全。今天系统没有执行过 sudo 特权命令，Agent 的记忆记录也没有相关内容，两边对账一致，不存在偷偷提权的情况。\n\n### 14. 生态组件恶意威胁情报扫描\n✅ 安全。已列出本机安装的 54 个 Skill 组件，全部在安全名单中。（如果使用了完整检测模式且命中威胁情报，这里会显示具体的恶意组件和处置建议。）\n\n---\n\n### 总结\n\n整体安全状况良好。主要有两个可以改进的地方：\n1. **建立配置文件指纹基线** — 这样以后可以自动检测核心配置是否被篡改\n2. **确认插件变更** — 组件文件有变化，如果是你自己安装/更新的就没问题\n\n其他检查项全部通过，没有发现安全威胁。\n```\n\n### 5.5 关于图标使用\n\n在解读报告时使用以下图标（只有这 4 个，不要使用其他图标）：\n\n| 图标 | 含义 | 对应报告状态 |\n|------|------|------------|\n| ✅ | 安全，没问题 | [PASS] |\n| ⚠️ | 有小问题，建议处理 | [FAIL] 但不严重 |\n| 🚨 | 严重问题，必须处理 | [FAIL] 且有安全风险 |\n| ⏭️ | 跳过了，不用担心 | [SKIP] |\n\n**判断 FAIL 是 ⚠️ 还是 🚨  的标准**：\n- 如果报告里提到\"篡改\"、\"恶意\"、\"爆破\"、\"危险\"、\"高危\" → 用 🚨\n- 如果报告里提到\"首次运行\"、\"缺失基线\"、\"权限过宽\"、\"未知请求\" → 用 ⚠️\n\n## 定时任务配置\n\n当用户后续要求\"设置定时巡检\"、\"修改定时任务\"、\"自动巡检\"时：\n\n1. 读取 [references/cron-setup.md](references/cron-setup.md) 文件\n2. 在执行任何配置命令前，向用户确认以下信息并等待明确同意：\n\n   **基本行为**：\n   - 定时任务将在后台持续运行（按用户指定的时间间隔，如每天、每周等）\n   - 每次执行会在本地生成报告（保存在 ~/.openclaw/security-reports/）\n   - 必须使用 `openclaw cron add` 而非系统 crontab（openclaw cron 管理独立的调度会话和超时，系统 crontab 无法正确初始化 OpenClaw 环境）\n\n   **隐私和网络行为**：\n   - **默认行为**：定时任务仅在本地运行，不产生任何网络请求\n   - **如果启用通知** `--announce/--channel/--to` 参数：每次巡检结果会通过 OpenClaw 消息通道（如 Telegram、钉钉）发送通知到指定 chat ID，这是额外的外部消息路径，需要用户明确知晓\n   - **严禁在定时任务中使用 --push**：定时任务的命令中绝不应该包含 `--push`，因为 --push 会让定时任务定期向 Changeway 服务器上报设备标识和 Skill 清单，造成隐私敏感数据的长期自动上报。--push 仅限用户单次手动运行时显式指定\n\n   **用户确认**：\n   - 询问用户：\"确认要设置定时巡检吗？定时任务会每天运行扫描并保存本地报告。(是/否)\"，收到\"是\"后再继续\n   - 如果用户问及通知功能，补充：\"通知功能会让结果发送到你的 Telegram/钉钉等，可选配置。\"\n\n3. 严格按照 cron-setup.md 中的步骤执行\n4. **关键安全要求**：\n   - 必须使用 `openclaw cron add` 命令，禁止使用系统 crontab\n   - 定时任务的命令中严禁添加 `--push` 参数\n   - 审查用户最终的 cron 命令，确保不含 --push\n","tags":{"latest":"1.0.8"},"stats":{"comments":0,"downloads":836,"installsAllTime":0,"installsCurrent":0,"stars":0,"versions":9},"createdAt":1773587506728,"updatedAt":1779219647298},"latestVersion":{"version":"1.0.8","createdAt":1773976445297,"changelog":"No functional changes in this version.\n- Documentation and skill manifest updated for privacy与安全性说明细化。\n- 明确标注联网与本地两种模式的数据处理和风险边界。\n- 增补 runtime、credentials、network_endpoints、dependencies 等字段，提升 skill 元数据完整性。\n- 定时任务依赖、文件保存目录、agent_id 说明等细节进一步完善。","license":"MIT-0"},"metadata":null,"owner":{"handle":"zsyjx0115","userId":"s173qeeyqx8cyc8w526kmmhwqs843qt3","displayName":"zsyjx0115","image":"https://avatars.githubusercontent.com/u/11780606?v=4"},"moderation":{"isSuspicious":false,"isMalwareBlocked":false,"verdict":"clean","reasonCodes":["review.llm_review"],"summary":"Review: review.llm_review","engineVersion":"v2.4.24","updatedAt":1779954074405}}