openclaw-security-patrol
OpenClaw security audit skill performs legitimate security scanning but collects extensive device fingerprinting data (MAC, hostname, persistent agent_id, full skill inventory) and transmits it to auth.ctct.cn under --push mode, with persistent tracking across sessions despite well-documented consent flows.
为什么得出这个结论
0/4 个维度触发声明资源与推断能力基本一致。
提取到 2 个一般风险产物,需要结合上下文判断。
没有形成明确的恶意路径。
依赖结构存在,但暂未看到明显高危告警。
风险分是怎么被拉高的
Collects and transmits MAC address, hostname, persistent agent_id, and full skill inventory — broad privacy impact
agent_id is generated once, stored permanently, and reused across all --push runs enabling long-term device history tracking
auth.ctct.cn is Changeway-operated, but no independent verification of server-side handling
Config baseline generation reads sensitive system credential files — not credential theft, but declared incorrectly
最关键的证据
Extensive device fingerprinting under --push mode
When --push is enabled, the skill transmits MAC address, hostname, persistent agent_id, and the complete installed skill inventory (with owner IDs and versions) to auth.ctct.cn. The skill list reveals all installed tools on the machine. The agent_id is a permanent, stable identifier enabling long-term device tracking across multiple manual --push invocations.
scripts/openclaw-hybrid-audit-changeway.js:1160 SKILL.md declares credentials:none but script reads sensitive credential files
The skill metadata declares 'credentials: none', yet the config baseline generation function reads /etc/shadow, ~/.ssh/authorized_keys, and /etc/passwd to generate file hashes. While this is used only for integrity baseline comparison (not exfiltration), it constitutes reading sensitive system credential files not declared in the credentials section.
scripts/openclaw-hybrid-audit-changeway.js:285 Unpinned Node.js runtime dependency
SKILL.md specifies 'node>=18' without an upper bound. While Node.js LTS releases are generally stable, the absence of a maximum version constraint allows updates to potentially incompatible future versions.
SKILL.md:1 Gateway process environment variable scanning
On Linux, the script reads /proc/{gateway_pid}/environ to detect sensitive environment variable names (SECRET, TOKEN, PASSWORD, KEY, PRIVATE patterns). While it only reads names and redacts values, this is a form of process memory inspection not declared in the capability map.
scripts/openclaw-hybrid-audit-changeway.js:395 FILTER_SKILLS_KEYWORDS silently excludes changeway-related skills from audit
The script defines FILTER_SKILLS_KEYWORDS = ['changeway', 'ctct-security-patrol'] and applies this filter to the openclaw security audit output, causing these skills to be excluded from audit results. This self-serving filtering is not mentioned in SKILL.md.
scripts/openclaw-hybrid-audit-changeway.js:308 声明能力 vs 实际能力
SKILL.md: Local file writes to ~/.openclaw/ SKILL.md: --push mode POSTs to auth.ctct.cn SKILL.md: 17 spawnSync calls to whitelist of read-only commands Reads /proc/PID/environ for gateway process sensitive variable names 可疑产物与外联
https://auth.ctct.cn:10020/changeway-open/api/pushAuditData SKILL.md:32
https://auth.ctct.cn:10020/changeway-open/api/skills/assessment SKILL.md:33
依赖与供应链
| 包名 | 版本 | 来源 | 漏洞 | 备注 |
|---|---|---|---|---|
| node | >=18 | runtime | 否 | No upper version bound specified |
文件构成
scripts/openclaw-hybrid-audit-changeway.js SKILL.md