T06 · System Persistence
- Location
SKILL.md:177- Finding
Persistent Scheduled Agent Execution with Credential Access
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 177–243
Vulnerability Type: Persistent scheduled tasks
Risk Level: HighVulnerable Code
markdown Create **two** cron jobs (morning + evening) that check match status and push updates to your chosen channel. The scheduled agent turn should call the **matching API** as documented above (full URL + auth), then handle **`next_steps`**. **Environment (required):** Export **`AILOVE_API_KEY`** wherever OpenClaw runs cron. Load it from `~/.openclaw/skills-data/going-on-a-date/credentials.json` or your preferred secret store. If the key is missing when the job fires, the API call fails with 401 or fails silently.bash openclaw cron add \ --name "Meetup Flow Morning" \ --cron "0 9 * * *" \ --tz "{timezone}" \ --session "isolated" \ --message "Load AILOVE_API_KEY from ~/.openclaw/skills-data/going-on-a-date/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 "Meetup Flow Evening" \ --cron "0 21 * * *" \ --tz "{timezone}" \ --session "isolated" \ --message "Load AILOVE_API_KEY from ~/.openclaw/skills-data/going-on-a-date/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 cron jobs. These jobs survive the invocation in which they are created and launch isolated agent sessions twice per day. Each scheduled session is directed to read a persistent API credential, send an authenticated request to an external service, process the returned
next_steps, and publish a summary to a messaging destination.Although scheduled status checks support the declared f ...[truncated 1941 chars]
- Remediation
View remediation
Remediation Suggestions
- Make API checks user-initiated by default rather than directing automatic cron installation.
- Require explicit, informed opt-in immediately before creating each scheduled job.
- Display the complete schedule, credential source, destination channel, and remote endpoint before confirmation.
- Add an expiration date or bounded run count to scheduled jobs.
- Provide commands to list, disable, and remove both jobs.
- Permit users to select a lower frequency and create only one job when sufficient.
- Use the platform's secret manager instead of reading a plaintext JSON credential during every scheduled session.
- Restrict the scheduled agent's tools and filesystem access to the minimum needed for the API request.
- Require renewed authorization before performing write operations such as submitting an answer.
- Record non-sensitive audit events for job creation, execution, modification, and removal without logging the bearer key.
