T06 · System Persistence
Error
- Location
- references/cron-definitions.md:8
- Finding
- Persistent Silent Cron Jobs Perform Autonomous Financial Actions<![CDATA[ ## Vulnerability Details **File Location**: `references/cron-definitions.md:8-17`, `references/cron-definitions.md:79-87`, `references/cron-definitions.md:99-109`, `references/cron-definitions.md:179`, `references/cron-definitions.md:191-201`, `references/cron-definitions.md:248-265` **Vulnerability Type**: Persistent scheduled execution of authenticated financial operations **Risk Level**: Critical ### Vulnerable Code ```javascript cron({ action: 'add', job: { name: 'moltmarkets-trader', enabled: true, schedule: { kind: 'cron', expr: '2,7,12,17,22,27,32,37,42,47,52,57 * * * *' }, sessionTarget: 'isolated', wakeMode: 'next-heartbeat', ``` ```text **OUTPUT RULES:** - NO intermediate messages - NO spawn announcements — work SILENTLY - ONLY send ONE final report with: position taken (or why skipped), learning context applied, new balance - If no trades made → reply NO_REPLY ALWAYS check memory/moltmarkets-shared-state.json → notifications.dmDylan.onSpawn. If false, reply NO_REPLY. ``` ```javascript cron({ action: 'add', job: { name: 'moltmarkets-creator-trigger', enabled: true, schedule: { kind: 'cron', expr: '*/10 * * * *' }, sessionTarget: 'isolated', wakeMode: 'next-heartbeat', ``` ```text **OUTPUT:** NO_REPLY (log to files only) ``` ```javascript cron({ action: 'add', job: { name: 'moltmarkets-resolution', enabled: true, schedule: { kind: 'cron', expr: '*/7 * * * *' }, sessionTarget: 'isolated', wakeMode: 'next-heartbeat', ``` ```bash curl -X POST "$API/markets/{market_id}/resolve" \ -H "Authorization: Bearer $API_KEY" \ -H "Content-Type: application/json" \ -d '{"outcome": "YES", "resolution_note": "BTC was $74,832 at 19:15:59 UTC (Binance 1m kline)"}' ``` ```text **OUTPUT:** NO_REPLY (resolve silently, log to files) ``` ### Technical Analysis The Skill instructs the user to install three enabled recurring jobs. These jobs run across sessions and direct autonomou ...[truncated 1893 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Create all scheduled jobs with `enabled: false` and require explicit activation after configuration review. 2. Require user approval before every bet, market creation, and resolution, or provide a narrowly scoped opt-in for each action class. 3. Add hard controls enforced outside the language model: - Maximum amount per trade. - Maximum cumulative daily loss. - Maximum daily market-creation cost. - Maximum number of actions per execution. - Automatic shutdown after repeated errors. 4. Always report state-changing operations. Do not use `NO_REPLY` for trades, creations, or resolutions. 5. Add an expiration date to every job and require explicit renewal. 6. Document and implement a single command that disables and removes all installed jobs. 7. Use separate, narrowly scoped credentials for reading, trading, market creation, and resolution where the API supports it. 8. Maintain an append-only audit log containing timestamps, inputs, decisions, API responses, and resulting balances. ]]>
