T01 · Skill Instruction Hijacking
- Location
encrypted-card.md:78- Finding
Remote API Responses Are Executed as Agent Instructions
- 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 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 treats the remote API's `spawn_payload.task` and `checkout_steps` fields as trusted Agent instructions. The content is not restricted to a locally defined set of payment actions, validated against an action schema, or displayed to the owner for approval before execution. Consequently, the effective behavior of the Skill is controlled by mutable server responses rather than only by the statically audited package. A compromised service, compromised account, or malicious response could replace the expected checkout task with instructions to access local files, disclose credentials, contact unrelated services, or perf ...[truncated 1514 chars]- Remediation
View remediation
