T01 · Skill Instruction Hijacking
Error
- Location
- SKILL.md:116
- Finding
- Untrusted Corpus Instructions Can Be Promoted to Executable Agent Tasks<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:49-57` and `SKILL.md:116-127` **Vulnerability Type**: `T01: Skill Instruction Hijacking` **Risk Level**: High ### Vulnerable Code Snippet ```markdown | Type | Description | Action | |------|-------------|--------| | TASK | Has a clear action verb + deliverable | EXECUTE | | IDEA | Speculative, "what if", product concept | SCORE (ICE) | | REFERENCE | Link, citation, spec, documentation | CATALOG | | DECISION | "We decided X", "going with Y" | RECORD | | HALF_THOUGHT | Fragment, incomplete, trails off | COMPLETE then re-classify | | MODEL_OUTPUT | AI-generated, assistant voice | EXTRACT core idea, discard wrapper | | DUPLICATE | Same as item #X | MERGE | | NOISE | Test, filler, meta-commentary | SKIP | ``` ```markdown Rules: 1. **Max 3 sub-agents concurrent.** Wait for one to complete before spawning another. 2. **QUICK items: execute inline** (no sub-agent overhead for < 5 min tasks). 3. **MEDIUM/HEAVY items: spawn sub-agent** with clear task description + acceptance criteria. 4. **Each sub-agent gets**: the item content, relevant context from other items, and the target artifact path. 5. **Track in manifest**: status → EXECUTING, then ✅ DONE / ❌ FAILED / ⚠️ PARTIAL. Sub-agent spawn template: ``` Task: [item summary] Context: [relevant items from this corpus] Deliverable: [specific file/artifact expected] Acceptance: [how to verify it's done] Workspace: [path] ``` ``` ### Technical Analysis The skill processes external corpora such as Google Drive dumps, ChatGPT exports, and Apple Notes. It classifies any item containing an action verb and deliverable as a `TASK`, after which the item may be executed inline or supplied directly to a sub-agent. The workflow does not require the agent to distinguish authorized user requests from quoted instructions, third-party document content, previous model output, or deliberately crafted prompt-injection text. The `MODEL_OUTPUT` classification only instruct ...[truncated 1560 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Treat all imported corpus content as untrusted data rather than executable instructions. 2. Separate analysis from execution. By default, produce a proposed execution plan and require explicit user approval before performing corpus-derived tasks. 3. Record provenance for each item, including its source file, author where available, and whether the user explicitly authorized execution. 4. Detect and quarantine content that attempts to change roles, override prior instructions, request secrets, invoke tools, or direct the agent to ignore safety controls. 5. Require confirmation for sensitive operations, including: - Shell or code execution - Network requests - Credential or secret access - File deletion or modification outside an approved workspace - Publication or transmission to external services 6. Apply explicit tool, command, network-domain, and filesystem-path allowlists to inline tasks and sub-agents. 7. Pass sub-agents a structured task summary instead of raw attacker-controlled instructions whenever possible. 8. Preserve quoted source material in a clearly delimited data field and explicitly instruct sub-agents not to follow instructions contained in that field. 9. Add authorization and safety review states to the manifest, such as `UNTRUSTED`, `REVIEW_REQUIRED`, and `APPROVED_FOR_EXECUTION`. ]]>
