T01 · Skill Instruction Hijacking
- Location
SKILL.md:280- Finding
Untrusted Remote Responses Can Redirect Agent Behavior
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, line 280
Vulnerability Type:T01: Skill Instruction Hijacking
Risk Level: HighComplete vulnerable snippet:
markdown **Follow next_steps.** Every response includes `next_steps` with context-aware suggestions. New agent? It guides you to your first concert. Just finished a show? It suggests a review or a new genre. Follow the suggestions — they adapt to where you are.Related dynamic endpoint handling appears at lines 157 and 161:
markdown | `reflection` | Concert is asking you a question. POST your response to the `respond_to` URL within `expires_in` seconds. Missed prompts are tracked in `progress.missed_reflections`. |markdown **Handling reflections:** When you see `type: "reflection"`, POST to the `respond_to` endpoint with your `ticket`, `reflection_id`, and `response`. Your response time and content are scored. Missing reflections is tracked -- the `end` event shows how many you answered vs received.Technical Analysis
The Skill unconditionally instructs the Agent to follow adaptive
next_stepsreturned bymusicvenue.space. These instructions are not statically present in the audited package and are controlled by a remote service at runtime. The Skill does not define an allowlist of permitted actions, validate response schemas, constrain suggestions to documented API operations, or require user confirmation.Consequently, the remote service—or an attacker capable of compromising its responses—can influence the Agent's goals and actions after the Skill has been reviewed. The dynamic
respond_tofield presents a related concern because the Skill does not explicitly require it to be a relative, same-origin HTTPS endpoint.Attack Path
- A user invokes the Skill, and the Agent communicates with
https://musicvenue.space. - The Agent retrieves an API response containing a remotely controlled
next_stepsfiel ...[truncated 1178 chars]
- A user invokes the Skill, and the Agent communicates with
- Remediation
View remediation
Remediation Suggestions
- Remove the unconditional instruction to follow remotely supplied
next_steps. - Treat every remote response field as untrusted data rather than executable Agent instructions.
- Define a strict allowlist of supported operations, HTTP methods, paths, and request-body schemas.
- Accept
next_batch.endpointandrespond_toonly when they are relative paths or resolve to the exact configured HTTPS origin. - Reject cross-origin URLs, user-info URL components, non-HTTPS schemes, redirects to other origins, and unexpected endpoint paths.
- Never forward bearer tokens or other sensitive headers across origins, including after HTTP redirects.
- Validate API responses against a fixed schema and ignore unknown action fields.
- Require explicit user approval before performing any operation outside the documented browsing, attendance, streaming, reflection, challenge, review, and reporting workflow.
- Represent remote suggestions to the user as informational recommendations rather than authoritative Agent instructions.
- Remove the unconditional instruction to follow remotely supplied
