Install any skill in seconds. Free to start, no credit card required.
Get Started Free →本技能并非纯本地扫描工具,在运行前请确认你已了解以下行为:
.claude/skills/ctct-security-patrol/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-07 | ✗→✓ | ▲ Improved | — | — |
| case-09 | ✗→✓ | ▲ Improved | — | — |
| case-08 | ✗→✓ | ▲ Improved | — | — |
| case-19 | ✗→✓ | ▲ Improved | — | — |
| case-15 | ✗→✓ | ▲ Improved | — | — |
本技能并非纯本地扫描工具,在运行前请确认你已了解以下行为:
所有模式均会(包括默认本地模式):
~/.openclaw/)仅在用户选择 --push 模式(需显式同意)时还会:
agent_id(~/.openclaw/.agent-id),形成持久设备标识auth.ctct.cn(Changeway 自营服务),可用于多次上传后的设备历史关联仅在用户选择设置定时任务时还会:
openclaw cron 添加定时任务,执行与 openclaw 基础设施绑定(可跳过,不影响手动执行)如对上述任一行为有顾虑,可仅使用本地模式并拒绝定时任务设置。
执行命令 node --version,确认返回了版本号(如 v18.x.x 或更高)。
检查文件 ~/.openclaw/.audit-first-run 是否存在。
如果文件已存在 → 跳过本步,直接进入第三步。
如果文件不存在(说明是首次使用),向用户发送以下消息,然后等待用户回复:
你好!这是首次使用安全巡检功能。
除了现在手动执行,你还可以设置每天自动巡检,系统会自动检查并把结果推送给你。**(默认执行时间为 23:45,也可以自定义为其他时间)**
请选择:
1. 设置每天自动巡检(推荐,省心)
2. 先跑一次看看,以后再说根据用户回复执行:
~/.openclaw/.audit-first-run(内容写 setup-done),然后必须读取 references/cron-setup.md 文件,严格按照其中的步骤帮用户配置定时任务。配置完成后再继续第三步。~/.openclaw/.audit-first-run(内容写 skipped),然后继续第三步。关于定时任务的硬性要求:
openclaw cron add 命令crontab -e 等)openclaw cron 会将定时执行与 openclaw 基础设施绑定;如不希望依赖此基础设施,可不设置定时任务,改为手动执行--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,服务端将积累该设备的历史安全档案
· Skill 清单揭示本机工具组合情况,每次上传均与 agent_id 绑定,形成可追溯的设备指纹
· 如对隐私有较高要求,建议始终选择本地模式(选项 1)
🎯 如同意数据上报,请回复:2 已了解根据用户回复执行:
根据用户在第三步的选择,执行对应的命令:
node <SKILL_DIR>/scripts/openclaw-hybrid-audit-changeway.jsnode <SKILL_DIR>/scripts/openclaw-hybrid-audit-changeway.js --push其中 <SKILL_DIR> 是本 skill 的安装目录(即本 SKILL.md 所在的目录)。
输出要求(严格遵守):
脚本执行完毕后,不要把脚本的完整控制台输出发给用户。脚本输出内容很长、包含大量技术细节,直接展示会让用户困惑。
你需要从脚本输出中只提取以下信息,然后按下面的格式发给用户:
PASS X FAIL X SKIP X 这一行,提取 PASS、FAIL、SKIP 的数量系统安全得分: XX / 100 这一行,提取得分;本地模式无此行,得分显示为"—"详细审计报告已保存至: ... 这一行,提取报告文件路径然后只向用户发送以下内容(不要多写,不要少写):
检测统计: PASS X FAIL X SKIP X
系统安全得分: XX / 100(本地模式下显示为"—")
详细审计报告已保存至: <报告文件路径>
需要我帮你解读这份报告吗?回复"是"我会逐项分析每个检查结果,告诉你哪些没问题、哪些需要注意。然后停下来等用户回复,不要自动开始分析。
当用户回复"是"、"要"、"分析"、"解读"、"看看"等肯定含义时,执行本步。
读取文件 ~/.openclaw/security-reports/report-YYYY-MM-DD.txt,其中 YYYY-MM-DD 是今天的日期。
如果文件不存在,告诉用户:"没有找到今天的报告文件,可能扫描还没完成,请稍后再试。"
输出规则(非常重要,必须全部遵守):
[1/14]、[2/14]... 的顺序,逐项输出分析以下是完整的输出模板。你必须按照这个格式来写,内容根据实际报告调整:
## 🔒 安全巡检报告解读
> 扫描时间:YYYY-MM-DD HH:MM
> 安全评分:XX / 100
---
### 1. 核心运行环境健康度
(根据报告中 [1/14] 的 PASS/FAIL 状态来写)
### 2. 系统敏感目录防篡改监控
(根据报告中 [2/14] 的内容来写)
### 3. 网关进程内存凭证隔离检查
(根据报告中 [3/14] 的内容来写)
... 依次写到第 14 项 ...
---
### 总结
用 2-3 句话概括整体安全状况,列出最需要关注的 1-2 个问题(如果有)。以下是基于一份真实报告的解读示范,展示每种状态该怎么写:
## 🔒 安全巡检报告解读
> 扫描时间:2026-03-15 17:04
> 安全评分:79 / 100
---
### 1. 核心运行环境健康度
✅ 环境扫描通过。有 3 条配置建议(如反向代理信任设置、credentials 目录权限),不影响安全但建议后续优化。
### 2. 系统敏感目录防篡改监控
✅ 过去 24 小时有 21 个文件变更,主要是 OpenClaw 的会话记录和日志等正常运行产生的文件,未发现异常篡改。
### 3. 网关进程内存凭证隔离检查
⏭️ 跳过。macOS 系统限制(SIP 保护机制),无法扫描其他进程的环境变量,这是正常的,不用担心。
### 4. 核心配置防篡改与权限基线
⚠️ 首次运行,还没有建立文件指纹基线,所以无法判断配置是否被篡改。好消息是:核心文件(openclaw.json、paired.json、sshd_config)的访问权限都设置正确。建议后续手动生成基线文件以开启防篡改监控。
### 5. 组件与插件供应链完整性
⚠️ 检测到 Skill/MCP 组件文件与上次基线不一致。如果你最近安装或更新了插件(如 wechat-macro-daily-report),这属于正常变更。如果没有主动操作过,建议检查是否有未经授权的组件变更。
### 6. 远程访问与爆破攻击监控
✅ 安全。过去 24 小时没有发现任何 SSH 登录失败记录,说明没有人在尝试暴力破解你的远程登录。
### 7. 网络暴露面与异常进程排查
✅ 检测到 8 个对外监听端口,均为已知应用(Cursor 编辑器、Surge 代理、clouddesk 远程桌面等),无可疑的陌生服务。CPU 占用正常。
### 8. 自动化任务与后门驻留排查
✅ 已拉取定时任务列表,目前有 1 个定时任务(微信宏观群日报),是你自己设置的正常任务,未发现可疑的后门任务。
### 9. 高危命令与越权行为审计
⏭️ 跳过。今天的 OpenClaw 运行日志文件不存在,可能是今天还没有执行过需要记录的操作。不用担心,下次有日志时会自动检查。
### 10. 异常外联与数据外泄监控
⏭️ 跳过。同上,今天的日志文件不存在,无法扫描网络请求记录。
### 11. 系统凭证与敏感文件访问审计
⏭️ 跳过。同上,今天的日志文件不存在,无法扫描文件访问行为。
### 12. 硬编码密钥与助记词防泄漏扫描
✅ 安全。扫描了工作区的所有文件,没有发现明文写死的私钥或助记词。
### 13. 特权提权(Sudo)操作对账审计
✅ 安全。今天系统没有执行过 sudo 特权命令,Agent 的记忆记录也没有相关内容,两边对账一致,不存在偷偷提权的情况。
### 14. 生态组件恶意威胁情报扫描
✅ 安全。已列出本机安装的 54 个 Skill 组件,全部在安全名单中。(如果使用了完整检测模式且命中威胁情报,这里会显示具体的恶意组件和处置建议。)
---
### 总结
整体安全状况良好。主要有两个可以改进的地方:
1. **建立配置文件指纹基线** — 这样以后可以自动检测核心配置是否被篡改
2. **确认插件变更** — 组件文件有变化,如果是你自己安装/更新的就没问题
其他检查项全部通过,没有发现安全威胁。在解读报告时使用以下图标(只有这 4 个,不要使用其他图标):
| 图标 | 含义 | 对应报告状态 | |------|------|------------| | ✅ | 安全,没问题 | PASS] | | ⚠️ | 有小问题,建议处理 | FAIL] 但不严重 | | 🚨 | 严重问题,必须处理 | FAIL] 且有安全风险 | | ⏭️ | 跳过了,不用担心 | SKIP] |
判断 FAIL 是 ⚠️ 还是 🚨 的标准:
当用户后续要求"设置定时巡检"、"修改定时任务"、"自动巡检"时:
基本行为:
openclaw cron add 而非系统 crontab(openclaw cron 管理独立的调度会话和超时,系统 crontab 无法正确初始化 OpenClaw 环境)隐私和网络行为:
--announce/--channel/--to 参数:每次巡检结果会通过 OpenClaw 消息通道(如 Telegram、钉钉)发送通知到指定 chat ID,这是额外的外部消息路径,需要用户明确知晓--push,因为 --push 会让定时任务定期向 Changeway 服务器上报设备标识和 Skill 清单,造成隐私敏感数据的长期自动上报。--push 仅限用户单次手动运行时显式指定用户确认:
openclaw cron add 命令,禁止使用系统 crontab--push 参数| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-02 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-07 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-14 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-05 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-09 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-03 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-08 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-16 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-19 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-15 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-01 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-13 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-21 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-12 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-20 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-04 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-17 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-06 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-10 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-11 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-18 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-22 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 21 counted toward the lift figure. The other 1 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +45 percentage points is the difference between those two pass rates over the 21 comparable cases.
The per-case answers from this run were removed by the retention sweep, so the case table below shows the verdicts without the text either arm produced. The counts above were recorded at the time and are unaffected. Answers are now kept for 180 days.
Other measured skills in the registry, with their headline benchmark lift.