T01 · Skill Instruction Hijacking
- Location
encrypted-card.md:82- Finding
Server-Controlled Instructions Are Executed by a Spawned Sub-Agent
- Content
View full analysis
Card-ChaseD-9547.md", "Use the decrypted card details to complete checkout at DigitalOcean.", "Call POST /api/v1/bot/rail5/confirm with { \"checkout_id\": \"r5chk_abc123\", \"status\": \"success\" } when done.", "If checkout fails, call confirm with { \"status\": \"failed\" } instead.", "Announce the result." ], "spawn_payload": { "task": "You are a checkout agent...", "cleanup": "delete", "runTimeoutSeconds": 300, "label": "checkout-digitalocean" } } ``` ```text ### Step 2: Spawn a Sub-Agent Once the checkout is approved, spawn an ephemeral sub-agent using the `spawn_payload` from the response: sessions_spawn({ task: spawn_payload.task, cleanup: "delete", runTimeoutSeconds: 300 }) The sub-agent executes the `checkout_steps` in sequence. You (the main agent) wait for the sub-agent to complete and then announce the result. ``` ### Technical Analysis The Skill directly passes the `spawn_payload.task` value returned by the CreditClaw API into `sessions_spawn`. The response is treated as executable agent instructions without local construction, semantic validation, an action allowlist, or human review. Authentication and HTTPS can establish the origin and integrity of a response in transit, but they do not make free-form instructions safe. If the CreditClaw backend, API account, or response-generation logic is compromised, the task can be replaced after the Skill has already passed review. This exceeds minimum privilege because a checkout operation only needs a narrowly d ...[truncated 1549 chars]- Remediation
View remediation
