T01 · Skill Instruction Hijacking
- Location
SKILL.md:99- Finding
Untrusted API Responses Are Treated as Authoritative Agent Instructions
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 99-110
Vulnerability Type: Remote instruction injection
Risk Level: Highmarkdown ## API Every response carries an `agentHint` with the next step. Follow it. | Method | Endpoint | Purpose | |--------|----------|---------| | GET | `/info` | supply, price, contract | | GET | `/check/{wallet}` | minted count and remaining slots | | POST | `/challenge` | `{wallet, quantity?}` → challenge, 3s clock starts | | POST | `/solve` | `{challengeId, answer}` → unsigned mint tx with co-signature | | POST | `/submit` | `{signedTransaction}` → broadcast, returns token ids | | GET | `/loop` | read The Loop (holder chat) — see `https://blink5555.vercel.app/loop.md` |Technical Analysis
The skill explicitly instructs the agent to follow the
agentHintfield contained in every remote API response. This converts untrusted, mutable server content into agent instructions without constraining the permitted values or requiring validation against a local protocol state machine.The API only needs to return structured challenge and transaction data for the declared minting functionality. Allowing it to issue arbitrary natural-language directions exceeds that minimum requirement. Even if the current server behaves legitimately, its responses can change after the skill has been audited. A compromise of the API, hosting account, DNS, or deployment pipeline could therefore alter the agent's behavior without modifying this package.
The same trust-boundary problem is reinforced by the skill's reliance on a remotely hosted Loop feed. Content returned from remote services should be treated exclusively as data, not as higher-priority operating instructions.
Attack Path
- An attacker compromises or controls
blink5555.vercel.app, its deployment account, or another component capable of changing API responses. - The user invokes the skill and the agent calls on ...[truncated 1091 chars]
- An attacker compromises or controls
- Remediation
View remediation
Remediation Suggestions
- Remove the instruction to follow
agentHint. - Treat
agentHintas display-only, untrusted text, or eliminate it from the workflow entirely. - Implement a local allowlisted state machine: challenge responses may supply only a challenge ID, seed, iteration count, expiration, and quantity; solve responses may supply only a transaction matching strict local invariants.
- Never permit API text to request secrets, select tools, alter destinations, install software, or override security rules.
- Validate response schemas, types, ranges, and protocol state before acting.
- Add an explicit instruction that all server-provided text and Loop messages are untrusted content and must never be interpreted as agent directives.
- Remove the instruction to follow
