T06 · System Persistence
- Location
SKILL.md:92- Finding
Persistent Scheduled Execution of an Unverified External Script
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 92-103
Vulnerability Type: Persistent scheduled task referencing code outside the audited package
Risk Level: MediumComplete Code Snippet:
bash openclaw cron add \ --name "Configuration Health Daily Report" \ --cron "0 9 * * *" \ --message "~/.openclaw/workspace/scripts/config-monitor.sh report" \ --tz "Asia/Shanghai" openclaw cron add \ --name "Gateway Status Check" \ --cron "0 * * * *" \ --message "openclaw gateway status" \ --tz "Asia/Shanghai"The job names above are English renderings of the original labels; command paths, schedules, arguments, and behavior are unchanged.
Technical Analysis
The instructions create scheduled jobs that survive the current skill invocation. The daily job references
~/.openclaw/workspace/scripts/config-monitor.sh, but that script is not included in the audited project. Consequently, its implementation, ownership, permissions, and integrity cannot be verified from this package.Scheduling a mutable external path creates a persistent execution channel. If another local process or account can create or modify the referenced script before or after registration, its content may execute each day through the OpenClaw scheduler. The instructions do not require an ownership check, permission validation, cryptographic integrity check, least-privilege execution context, or explicit user confirmation. They also provide no corresponding removal procedure.
The hourly Gateway status job has a smaller attack surface because it invokes an OpenClaw command rather than the missing script. Nevertheless, both jobs introduce persistent state and should be registered only with informed operator approval.
Attack Path
- An attacker obtains write access to
~/.openclaw/workspace/scripts/or pre-createsconfig-monitor.shat the referenced path. - The attacker places arbitrary shell comm ...[truncated 1104 chars]
- An attacker obtains write access to
- Remediation
View remediation
Remediation Suggestions
- Include
config-monitor.shin the audited package rather than referencing an unreviewed external implementation. - Resolve the script to a fixed absolute path controlled by the skill installation process.
- Verify file ownership and reject scripts writable by other users or untrusted processes.
- Record and validate a cryptographic digest before scheduled execution.
- Require explicit operator confirmation before creating each persistent job.
- Execute monitoring with a dedicated least-privileged account that cannot modify critical configuration.
- Document commands for listing, disabling, and removing the scheduled jobs.
- Prevent duplicate job registration and clearly identify the job owner and expected output destination.
- Prefer a scheduler mechanism that invokes a structured, allow-listed operation rather than interpreting a free-form command message.
- Include
