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.
Why this conclusion was reached
0/4 dimensions flaggedDeclared resources and inferred behavior are broadly aligned.
2 lower-risk artifacts were extracted and still need context.
There is no explicit malicious chain in the report.
Dependencies are present but no obvious high-risk issue stands out.
What drove the risk score up
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
Most important evidence
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 Declared capability vs actual capability
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 Suspicious artifacts and egress
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
Dependencies and supply chain
| Package | Version | Source | Known vuln | Notes |
|---|---|---|---|---|
| node | >=18 | runtime | No | No upper version bound specified |
File composition
scripts/openclaw-hybrid-audit-changeway.js SKILL.md