T06 · System Persistence
Error
- Location
- SKILL.md:17
- Finding
- Unbounded Cross-Session Persistence Through Scheduled PR Monitoring## Vulnerability Details **File Location**: `SKILL.md:17-24` **Additional Locations**: `SKILL.md:108-124`, `references/workflow.md:17` **Vulnerability Type**: Scheduled task persistence **Risk Level**: High The following is an English rendering of the complete affected instruction block: ```text Steps: 1. Confirm the repository name and PR number. 2. Use the gh CLI or browser to obtain the current PR status. 3. Create memory/pr-tracking.md to record the initial status. 4. Configure cron to check periodically, every two hours by default. 5. Inform the user of the current status and blockers. ``` Related instructions require the agent to continue checking the pull request every two hours and automatically handle problems within its capabilities. ### Technical Analysis The Skill directs the agent to install a recurring cron task that survives the current execution session. It does not define: - The exact scheduler command or execution target. - The identity and privileges under which the job runs. - An expiration time or maximum number of executions. - A unique task identifier for later removal. - Automatic cleanup when the pull request is merged, closed, or abandoned. - A requirement for explicit informed user approval before installation. - Restrictions on what repository mutations a scheduled invocation may perform. This creates a persistent execution mechanism with an undefined lifecycle. Because the scheduled workflow may inspect reviews, modify code, push commits, and post GitHub comments, the persistence is not limited to passive status monitoring. ### Attack Path 1. A user asks the Skill to track a pull request. 2. The agent follows the instruction to create a recurring cron task. 3. The initiating session ends, but the task remains installed. 4. The scheduled process continues authenticating to GitHub every two hours. 5. A later review, CI event, or attacker-controlled comment triggers ...[truncated 830 chars]
- Remediation
- ## Remediation Suggestions 1. Remove automatic cron installation and prefer session-scoped polling. 2. Require explicit, separate user confirmation before creating any persistent task. 3. Display the exact scheduler command, execution identity, frequency, permissions, and cleanup behavior before installation. 4. Assign every task a unique identifier tied to one repository and pull request. 5. Set a mandatory expiration time and execution limit. 6. Automatically remove the task when the pull request is merged, closed, or no longer accessible. 7. Restrict scheduled runs to read-only status collection. Require interactive approval for code changes, pushes, force-pushes, review replies, issue closure, or branch deletion. 8. Provide a command that lists and removes all tasks created by the Skill. 9. Log scheduled activity without storing credentials or sensitive repository content.
