| name | ctct-security-patrol |
| description | OpenClaw 安全巡检工具,一键执行系统安全扫描并生成通俗易懂的报告。
使用场景:用户说"安全巡检"、"安全检查"、"安全审计"、"巡检"、"security audit"、"检查安全"、"系统安全"等。
触发条件:任何与 OpenClaw 安全检测、审计、巡检相关的请求。
|
| credentials | none |
| privacy | 本技能有两种运行模式,隐私风险等级不同:
**模式 1:本地离线模式(默认)**
- 零网络请求,零数据上报
- 扫描报告仅保存在本机 ~/.openclaw/security-reports/
**模式 2:完整检测模式(--push,需明确确认)**
- 启用后向 Changeway 威胁情报服务上报隐私敏感数据
- 上报内容:MAC 地址、主机名、持久化 agent_id(首次生成后永久保存在本机)、本机完整 Skill 清单
- 上报频率:仅在用户单次手动运行时上报一次;定时任务(cron)严禁使用 --push
- 防重放机制:每次请求附带 Unix 时间戳 + 随机 nonce,服务端校验时间窗口,防止请求被重放;SHA-256(mac + hostname + timestamp + nonce) 作为请求指纹附在 X-SIGN 头部,但此机制**不构成设备身份认证**(无预共享密钥,服务端无法单凭签名验证请求来源的合法性)
- **用户必须在知情同意前提下明确选择此模式**
|
| network_endpoints | 仅在 --push 模式下访问(需要用户显式确认):
- https://auth.ctct.cn:10020/changeway-open/api/pushAuditData
- https://auth.ctct.cn:10020/changeway-open/api/skills/assessment
端点归属:auth.ctct.cn 由本 Skill 的发布方 Changeway 自行运营,非第三方平台。
用户在选择 --push 模式前应自行判断是否信任该服务。
|
| dependencies | 运行依赖:
必需:Node.js v18+
可选:openclaw CLI(用于定时任务管理;若使用定时巡检功能,需依赖 openclaw cron 命令)
脚本调用的系统命令(缺失时对应检查项会 SKIP,不影响其他项):
macOS:find、lsof、netstat、ps、last、lastb、grep、awk、cat、sudo
Linux:find、ss、lsof、ps、journalctl、last、lastb、grep、awk、cat、sudo
Windows:wmic、netstat、tasklist、findstr
|
| security_notes | 命令执行安全性:
- 脚本通过 Node.js 内置的 spawnSync(非 exec/execSync)调用系统命令
- 参数以数组形式传入,不经过 shell 字符串拼接,无命令注入风险
- 所有 spawnSync 调用(共 13 处)只允许以下固定命令名白名单:
openclaw、find、pgrep、journalctl、log、ss、ps、lsof、diff、wevtutil、netstat、tasklist、powershell
- 以上命令均为只读系统状态查询,不执行写入、删除或提权操作
数据处理边界:
- 脚本对每项检查生成两个字段:detail(完整命令输出,仅本地落盘,不上传)和 brief(结果摘要)
- 上传时明确排除 detail 字段,仅上传 item 和 brief
本地文件存储:
- 扫描报告:~/.openclaw/security-reports/report-YYYY-MM-DD.{txt,json}
- Skill 哈希基线:~/.openclaw/skill-hashes/
- 持久化 agent_id:~/.openclaw/.agent-id
- 首次运行标记:~/.openclaw/.audit-first-run
|
OpenClaw 安全巡检
第一步:检查运行环境
执行命令 node --version,确认返回了版本号(如 v18.x.x 或更高)。
- 如果命令成功返回版本号 → 继续第二步
- 如果报错"command not found" → 告诉用户:"安全巡检需要 Node.js 环境,请先安装 Node.js(推荐 v18 以上),安装后再来找我。",然后停止,不要继续后续步骤
第二步:首次使用引导
检查文件 ~/.openclaw/.audit-first-run 是否存在。
如果文件已存在 → 跳过本步,直接进入第三步。
如果文件不存在(说明是首次使用),向用户发送以下消息,然后等待用户回复:
你好!这是首次使用安全巡检功能。
除了现在手动执行,你还可以设置每天自动巡检,系统会自动检查并把结果推送给你。**(默认执行时间为 23:45,也可以自定义为其他时间)**
请选择:
1. 设置每天自动巡检(推荐,省心)
2. 先跑一次看看,以后再说
根据用户回复执行:
- 用户选 1(或回复"设置"、"自动"、"定时"等含义)→ 先创建标记文件
~/.openclaw/.audit-first-run(内容写 setup-done),然后必须读取 references/cron-setup.md 文件,严格按照其中的步骤帮用户配置定时任务。配置完成后再继续第三步。
- 用户选 2(或回复"先跑一次"、"以后再说"、"跳过"等含义)→ 创建标记文件
~/.openclaw/.audit-first-run(内容写 skipped),然后继续第三步。
关于定时任务的硬性要求:
- 必须使用
openclaw cron add 命令
- 禁止使用系统 crontab(
crontab -e 等)
- 原因:系统 crontab 无法正确初始化 OpenClaw 环境,会导致执行失败
- cron 命令中严禁添加
--push 参数:定时任务只以本地离线模式运行,绝不自动向远端上报设备标识
第三步:询问检测模式
向用户发送以下消息,然后等待用户回复:
请选择检测模式:
1. 仅本地扫描(默认)— 不联网、不发送任何数据
· 所有扫描报告仅保存在本地 ~/.openclaw/security-reports/
· 适合离线环境或隐私敏感场景
· 无任何网络请求
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
⚠️ 注意:下面的完整检测模式会向外部服务器发送隐私敏感数据
请仔细阅读数据上报内容后再决定
2. 完整检测(--push)— 联网查询威胁情报并同步安全评分
📡 网络请求目标(仅在用户同意时):
- 服务器:https://auth.ctct.cn:10020(Changeway 自营服务器,本 Skill 的发布方,非第三方平台)
- 端点1:/changeway-open/api/pushAuditData
- 端点2:/changeway-open/api/skills/assessment
📊 上报的隐私敏感数据包括:
· MAC 地址(如 a1:b2:c3:d4:e5:f6)
· 主机名(如 MacBook-Pro.local)
· agent_id(首次自动生成并永久保存在 ~/.openclaw/.agent-id,后续复用)
· 本机已安装的完整 Skill 清单(包含名称、作者、版本、所有者 ID)
· 每项安全检查的名称和结果摘要(不包含详细命令输出)
🔐 请求防重放机制(非设备认证):
· 每次请求附带时间戳 + 随机 nonce,服务端校验时间窗口防重放
· X-SIGN = SHA-256(mac + hostname + timestamp + nonce),用作请求指纹
· 注意:此机制无预共享密钥,不构成设备身份认证;服务端以 agent_id 标识设备来源
· 完整命令输出和敏感日志仅保存本地,不上传
⚠️ 重要限制:
· 此选项仅限本次手动执行(一次性)
· 定时巡检(cron)中绝不自动启用 --push,防止设备信息被长期自动上报
· agent_id 是持久化的,后续手动运行如再次选择完整检测会复用同一 ID
🎯 如同意数据上报,请回复:2 已了解
根据用户回复执行:
- 用户回复 "1" 或任何"本地"、"离线"含义 → 记录选择:本地模式,继续第四步