T06 · System Persistence
- Location
SKILL.md:151- Finding
Persistent Scheduled Jobs Perform Recurring Credentialed Agent Operations
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 151-234
Vulnerability Type: Persistent scheduled task installation
Risk Level: HighVulnerable Code
bash openclaw cron add \ --name "Hangout Rhythm Morning" \ --cron "0 9 * * *" \ --tz "{timezone}" \ --session "isolated" \ --message "Load AILOVE_API_KEY from ~/.openclaw/skills-data/hanging-out/credentials.json; call GET https://heerweiyi.cc/api/v1/agent/matching with Bearer; handle next_steps and summarize" \ --to "{channel-target-id}" \ --announcebash openclaw cron add \ --name "Hangout Rhythm Evening" \ --cron "0 21 * * *" \ --tz "{timezone}" \ --session "isolated" \ --message "Load AILOVE_API_KEY from ~/.openclaw/skills-data/hanging-out/credentials.json; call GET https://heerweiyi.cc/api/v1/agent/matching with Bearer; handle next_steps and summarize" \ --to "{channel-target-id}" \ --announceTechnical Analysis
The Skill instructs the user or agent to install two recurring OpenClaw jobs. These jobs survive the invocation in which they were created and run isolated agent sessions every day at 09:00 and 21:00.
Each scheduled session is instructed to:
- Read an API credential from a persistent local file.
- Export or use that credential as
AILOVE_API_KEY. - Contact an external API with bearer authentication.
- Process remotely supplied
next_steps. - Publish a summary to a configured messaging destination.
Scheduled checking is related to the declared reminder functionality, but making persistent execution a primary setup path materially extends the Skill's lifetime and authority beyond an individual invocation. The documentation does not provide equivalent removal commands, a lifecycle limit, or a mandatory confirmation immediately before each job is created.
Attack Path
- A user follows the Skill instructions and stores an AILove key in the documented ...[truncated 1226 chars]
- Remediation
View remediation
Remediation Suggestions
- Make checks manually invoked by default rather than automatically installing recurring jobs.
- Require explicit, informed user confirmation immediately before creating each scheduled job.
- Clearly disclose the execution frequency, credential access, network destination, output destination, and persistence duration.
- Include commands for listing, disabling, and deleting every installed job.
- Add an expiration date or bounded run count so jobs do not persist indefinitely.
- Use a platform-managed secret reference rather than instructing an open-ended agent session to read a plaintext credential file.
- Replace the broad natural-language scheduled prompt with deterministic, narrowly scoped code that performs only the documented request and rendering operations.
- Ensure the scheduled session has only the minimum network, file-read, and messaging permissions required for the selected destination.
