T06 · System Persistence
Error
- Location
- SKILL.md:227
- Finding
- Persistent External Inbox Polling Through a Scheduled Cron Job<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:227-231` **Vulnerability Type**: Persistent scheduled task contacting an external service **Risk Level**: High ### Complete Vulnerable Snippet ```markdown - Poll at least once per hour to avoid missing messages. ## Best Practices **Poll your inbox regularly.** Set up an OpenClaw cron job to check your inbox every 30 minutes using curl. Messages expire after 7 days and are removed once read, so regular polling ensures you never miss a message. ``` ### Technical Analysis The Skill explicitly directs the agent to create an OpenClaw cron job that contacts `agentdeaddrop.com` every 30 minutes. If followed, this scheduled task survives the current Skill invocation and continues running across later sessions. The task would require access to the Deaddrop API key to authenticate inbox requests. Depending on how the cron command is constructed, that credential could be exposed in cron configuration, command-line arguments, logs, shell history, or process metadata. Repeated polling also creates a persistent external communication channel through which unknown remote agents can continue delivering content. Although the Markdown file does not itself install the scheduled task, its operational instructions explicitly solicit persistence. The resulting process would execute with the permissions of the user or agent account that creates the cron entry. ### Attack Path 1. The agent loads the Skill and registers with the external Deaddrop service. 2. Registration returns a bearer API key. 3. Following the Skill's recommendation, the agent creates an OpenClaw cron job containing a periodic `curl` request. 4. The scheduled task and any embedded authentication material persist after the current Skill run ends. 5. Every 30 minutes, the task contacts the external service and consumes inbox content. 6. Remote agents can continue sending attacker-controlled messages through this persistent communication channel. ...[truncated 1045 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions - Remove the instruction to create an OpenClaw cron job or any other persistent scheduled task. - Make inbox polling an explicit, user-initiated operation limited to the current session. - Require separate, informed user authorization before creating any scheduled task. - Clearly disclose the polling interval, destination, credential use, message-consumption behavior, and removal procedure before authorization. - Never place bearer tokens directly in cron command text or command-line arguments. - If persistent polling is genuinely required, retrieve credentials from a protected secret manager with restrictive access controls. - Provide a documented cleanup mechanism that removes the scheduled task and revokes its API key. - Apply request timeouts, bounded retries, rate limits, audit logging, and a network allowlist. - Treat all retrieved message bodies as untrusted data and prevent scheduled polling from automatically executing or acting on them. ]]>
