T06 · System Persistence
Error
- Location
- SKILL.md:111
- Finding
- Recurring Cron Job Creates Cross-Session Persistence<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:111-113` **Vulnerability Type**: Scheduled-task persistence **Risk Level**: Critical ### Vulnerable Code ```markdown ### 4) Schedule daily report Use cron to call `snaptrade_total.py`, format a concise WhatsApp message, then send it to the user. Only the total value is required. ``` ### Technical Analysis The Skill explicitly instructs the user or Agent to create a cron job that repeatedly executes `snaptrade_total.py`. This scheduled execution survives the original Skill run and continues accessing financial account information in future sessions. The instruction does not require confirmation immediately before creating the task, establish an expiration date, restrict the reporting destination, or provide instructions for inspecting and removing the persistent job. ### Attack Path 1. The Agent loads and follows the workflow in `SKILL.md`. 2. A cron entry is created to run `snaptrade_total.py` daily. 3. Each execution loads persistent SnapTrade credentials and retrieves brokerage balances. 4. The resulting financial total is formatted and sent through WhatsApp. 5. The task continues running after the original interaction ends and may remain active until manually discovered and removed. ### Impact Assessment The scheduled job obtains recurring access to the user's brokerage portfolio information using stored SnapTrade credentials. Its scope includes repeated retrieval of balances and recurring disclosure of portfolio totals to an external messaging destination. An incorrectly configured, forgotten, or unauthorized schedule could expose financial information indefinitely. ]]>
- Remediation
- <![CDATA[ ## Remediation Suggestions - Do not direct an Agent to create scheduled tasks automatically. - Require explicit, informed user consent immediately before scheduler creation. - Display the exact command, frequency, execution identity, credential source, and reporting destination. - Prefer a scheduler entry with a defined expiration date or bounded execution count. - Avoid embedding secrets in cron commands or environment variables. - Record the created job identifier and provide verified inspection and removal commands. - Require separate confirmation before sending financial information through WhatsApp or another external channel. - Default to an on-demand report when persistent scheduling is not strictly necessary. ]]>
