T06 · System Persistence
- Location
SKILL.md:22- Finding
Persistent Every-Minute Cron Job Without Lifecycle Controls
- Content
View full analysis
/dev/null; echo "* * * * * PATH=$HOME/.npm-global/bin:/usr/local/bin:/usr/bin:/bin ENCRYPTED_ENERGY_API_KEY= bash {baseDir}/scripts/ping.sh >/dev/null 2>&1" ) | crontab - ``` The `PATH=$HOME/.npm-global/bin:…` prefix is required — `ping.sh` calls `openclaw health --json` and `openclaw status --json`, and crontab's default PATH won't find the openclaw binary. ``` ### Technical Analysis The documented installation command modifies the user's system crontab and causes `ping.sh` to execute every minute across login sessions and system restarts where cron is active. Recurring execution is related to the declared dead-man monitoring function and is explicitly disclosed, but it nevertheless constitutes system persistence. The installation is not idempotent: each execution appends another identical entry. This can produce duplicate requests, unnecessary system activity, and violations of the stated one-request-per-minute limit. The Skill also provides no uninstall command, expiration mechanism, or managed marker through which its entry can be reliably identified and removed. Because the script location remains under the Skill directory, subsequent modification or replacement of that file would affect every future scheduled invocation. ### Attack Path 1. The user follows the setup instructions. 2. The command copies the existing crontab, appends a new every-minute task, and writes the combined configuration back with `crontab -`. 3. The cron daemon invokes the Skill script every minute independently of the original Agent session. 4. Each invocation collects local OpenClaw st ...[truncated 612 chars]- Remediation
View remediation
