T06 · System Persistence
- Location
SKILL.md:167- Finding
Persistent Unattended Execution Through Scheduled OpenClaw Jobs
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 167-245
Vulnerability Type: Persistent scheduled execution
Risk Level: HighVulnerable Code
markdown ## Skill: AILove Scheduled Push Configuration Create **two** cron jobs (morning + evening) that check AILove and push updates to your chosen channel. The scheduled agent turn should **read `~/.ailove/SKILL.md`**, call the **matching API** as documented there (full URL + auth), then handle **`next_steps`**.bash openclaw cron add \ --name "AILove Morning Check" \ --cron "0 9 * * *" \ --tz "{timezone}" \ --session "isolated" \ --message "Load AILOVE_API_KEY from ~/.openclaw/.env; read ~/.ailove/SKILL.md; matching API per doc with Bearer; handle next_steps and summarize" \ --to "{channel-target-id}" \ --announcebash openclaw cron add \ --name "AILove Evening Check" \ --cron "0 21 * * *" \ --tz "{timezone}" \ --session "isolated" \ --message "Load AILOVE_API_KEY from ~/.openclaw/.env; read ~/.ailove/SKILL.md; matching API per doc with Bearer; handle next_steps and summarize" \ --to "{channel-target-id}" \ --announceTechnical Analysis
The Skill instructs the user or agent to install two scheduled jobs that survive the original Skill invocation. Each job starts an isolated agent session, accesses a persistent bearer credential, reads instructions from a local Skill file, contacts the external service, and publishes results to a configured messaging destination.
Scheduling may be useful for proactive notifications, but it is not required for the Skill's core on-demand matchmaking-status functionality. Installing both jobs therefore expands the duration and frequency of network, credential, and messaging access beyond the minimum privileges needed for a single user-requested check.
The instructions do not provide a corresponding removal command, expiration policy, per-run ...[truncated 1352 chars]
- Remediation
View remediation
Remediation Suggestions
- Make scheduling explicitly optional and disabled by default.
- Require informed confirmation before creating each scheduled job, including the schedule, destination, credential accessed, and data that may be posted.
- Default to an on-demand status check rather than persistent automation.
- Add a documented expiration time or execution limit to scheduled jobs.
- Provide exact commands for listing, disabling, and removing both jobs.
- Require confirmation before posting sensitive dating information to group or public destinations.
- Store only an opaque Skill identifier in the job and use a fixed, locally reviewed execution policy rather than rereading unrestricted instructions on every run.
- Apply least-privilege scopes to the credential used by scheduled jobs and rotate it when the jobs are removed.
