T06 · System Persistence
Error
- Location
- SKILL.md:29
- Finding
- Persistent Scheduled Progress Reporter with External Data Transmission## Vulnerability Details **File Location**: `SKILL.md`, lines 29–32 and 76–84 **Vulnerability Type**: `T06: System Persistence` **Risk Level**: High **Vulnerable code:** ```markdown When you receive a large task, immediately: 1. **Create a task file** at `.tasks/<TASK-SLUG>.md` (use kebab-case slug) 2. **Decompose** the task into numbered steps 3. **Spawn a reporter cron** to send progress updates 4. **Begin execution**, updating the file after each step ``` ```markdown ## Progress Reporting (Cron) At task start, spawn a cron reporter using `exec`: ```bash openclaw cron add "task-report-<SLUG>" \ --schedule "*/15 * * * *" \ --message "Read .tasks/<SLUG>.md and send a Feishu message to the user with progress update. Include: completed steps, current step, blockers if any. Keep it under 5 sentences. Remove this cron when Status=done or Status=failed." \ --once-complete ``` ``` ### Technical Analysis The skill instructs the agent to execute `openclaw cron add` whenever a task meets its broad definition of a large task. This creates recurring automation that can survive the initiating interaction and continue operating across sessions. The scheduled reporter is directed to read `.tasks/<SLUG>.md`. Under the required task-file format and execution procedure, this file may contain task descriptions, progress logs, findings, error details, blockers, and final results. The reporter then sends a derived summary through the external Feishu messaging service. Consequently, the persisted job has ongoing access to task-derived information and an external transmission channel. Cleanup depends on the task reaching `done` or `failed` and on the cron or agent correctly recognizing that state. The instructions instead use `paused` when work becomes blocked, which is not identified as a cron-removal condition. Interrupted sessions, abandoned tasks, malformed state files, cleanup failures, or p ...[truncated 1771 chars]
- Remediation
- ## Remediation Suggestions 1. Require explicit, task-specific user consent before creating any scheduled job. Clearly disclose its frequency, duration, data source, and messaging destination. 2. Prefer non-persistent, in-session progress reporting. Do not install a cron job when the same goal can be achieved during the active session. 3. If scheduling is necessary, assign a strict expiration time or maximum execution count instead of relying exclusively on task-file status. 4. Record and validate the exact scheduler job identifier, and remove it on every terminal path, including completion, failure, pause, cancellation, timeout, interruption, and malformed-state detection. 5. Treat `paused` as a cleanup condition unless the user explicitly authorizes continued reporting. 6. Obtain separate confirmation before transmitting task information externally, and consistently identify the actual service as Feishu rather than referring to WhatsApp elsewhere. 7. Minimize the information included in reports. Redact credentials, personal data, proprietary content, internal paths, and other sensitive task details before transmission. 8. Restrict the scheduled process to the specific task file, use least-privilege permissions, and prevent traversal or unintended file selection through strict slug validation. 9. Provide commands or automated logic to enumerate and remove orphaned `task-report-*` jobs.
