T06 · System Persistence
- Location
references/advanced-patterns.md:70- Finding
Persistent Scheduled Transmission of Financial Summaries
- Content
View full analysis
Vulnerability Details
File Location:
references/advanced-patterns.md, lines 70–81
Vulnerability Type: T06: System Persistence
Risk Level: HighThe skill provides instructions for installing a recurring OpenClaw cron task that reads local financial records, generates a profit-and-loss summary, and announces that summary to a configured Telegram chat.
Complete Vulnerable Code Snippet:
bash openclaw cron add \ --name "month-end-close" \ --cron "0 18 28-31 * *" \ --model "anthropic/claude-haiku-3-5" \ --session isolated \ --message "Check if today is the last day of the month. If yes, run the month-end close: generate P&L from finance/income-log.md and finance/expense-log.md, append to finance/monthly-summary.md, update finance-state.json, and send me a summary." \ --announce \ --to "[YOUR_TELEGRAM_CHAT_ID]" \ --tz "America/Chicago"Technical Analysis
The
openclaw cron addcommand creates a scheduled task that persists beyond the current agent session. It executes between the 28th and 31st day of every month and checks whether it should perform the month-end close.The scheduled prompt explicitly directs the agent to:
- Read
finance/income-log.mdandfinance/expense-log.md. - Generate a profit-and-loss report.
- Update local financial state.
- Send a summary through the announcement destination specified by
--to.
The combination of
--announceand--to "[YOUR_TELEGRAM_CHAT_ID]"establishes an external transmission channel for derived financial information. This behavior conflicts with the privacy representation inSKILL.mdthat financial data remains local and is not transmitted externally.The task runs in an isolated session, but isolation does not eliminate persistence or disclosure risk because the scheduled session is intentionally granted access to the financial files and an outbound messaging destination. Exploitation requires the us ...[truncated 1841 chars]
- Read
- Remediation
View remediation
Remediation Suggestions
- Remove
--announceand--tofrom the automated month-end example so scheduled processing remains local by default. - Require explicit, informed user approval before each external transmission of financial information.
- Clearly disclose that
openclaw cron addcreates a persistent cross-session task and document how to inspect, disable, and remove it. - Separate local report generation from external delivery. The scheduled task should create a local draft, while the user manually approves any subsequent send.
- If external delivery is retained as an optional feature:
- Validate and display the destination before registration.
- Require confirmation that the destination is private and controlled by the user.
- Minimize transmitted content and omit transaction-level details.
- Apply access controls and encryption supported by the messaging platform.
- Record when and where summaries are sent.
- Provide a local opt-out and task-removal command.
- Update the privacy documentation in
SKILL.mdso it accurately distinguishes local-only default behavior from optional external integrations. - Avoid granting the scheduled session access to unrelated workspace files and restrict it to the minimum financial files required for report generation.
- Remove
