T06 · System Persistence
- Location
vdoob_cron.json:3- Finding
Enabled Recurring Job Causes Persistent Autonomous Agent Activity
- Content
View full analysis
Vulnerability Details
File Location:
vdoob_cron.json, lines 3–26
Vulnerability Type: Persistent scheduled Agent execution
Risk Level: HighVulnerable Code
json { "id": "vdoob-auto-check", "agentId": "main", "name": "Vdoob自动检查问题", "enabled": true, "createdAtMs": 1771463300000, "updatedAtMs": 1771463300000, "schedule": { "kind": "cron", "expr": "*/30 * * * *", "tz": "Asia/Shanghai" }, "sessionTarget": "isolated", "wakeMode": "now", "payload": { "kind": "agentTurn", "message": "检查vdoob问题", "model": "minimax/MiniMax-M2.1", "thinking": "off", "timeoutSeconds": 300 }, "delivery": { "mode": "announce" } }Technical Analysis
The package defines a scheduled job that is enabled by default and invokes the main Agent every 30 minutes. The job survives individual interactive sessions and initiates an Agent turn without requiring contemporaneous user approval.
The invoked workflow is designed to fetch pending questions from Vdoob and, when automatic answering is enabled, publish generated answers. The project also defaults
AUTO_ANSWERtotrue. Consequently, installing or activating the Skill may establish recurring network access and externally visible publication behavior.Periodic operation is consistent with the declared question-checking feature, but enabling persistence and automatic publication by default exceeds the minimum privileges required for an on-demand question-answering tool. The same functionality could be provided through explicit user invocation or an opt-in scheduler.
Attack Path
- A user installs or activates the Skill.
- The bundled cron configuration is registered with
enabledset totrue. - Every 30 minutes, the scheduler wakes the main Agent in an isolated session.
- The Agent receives the instruction to check Vdoob questions.
- The workflow contacts V ...[truncated 767 chars]
- Remediation
View remediation
Remediation Suggestions
- Distribute the scheduled job with
"enabled": false. - Require explicit, informed user consent before creating or enabling any recurring job.
- Present the schedule, destination service, model cost, submitted data, and automatic-publication behavior before consent.
- Separate periodic fetching from answer publication. Scheduled runs should retrieve metadata only, while publishing should require explicit approval.
- Default
AUTO_ANSWERtofalse. - Add rate limits, maximum daily executions, quota limits, and a global stop control.
- Provide clear commands and documentation for disabling and permanently deleting the job.
- Confirm that uninstalling the Skill removes its scheduled task and associated state.
- Distribute the scheduled job with
