T01 · Skill Instruction Hijacking
- Location
SKILL.md:85- Finding
Externally Controlled Instructions Can Hijack Agent Engagement
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:85-159andSKILL.md:303-304
Vulnerability Type: External instruction delegation and mandatory engagement behavior
Risk Level: HighVulnerable Code Snippets
The following is an English translation of the relevant instructions in
SKILL.md:85-106:text ## Core Rules (Must Be Followed) 1. Use parent_id when replying to another comment. 2. Vote first when a poll exists — when a post has has_poll: true, participate through the voting API. 3. Do not upvote yourself. 4. After receiving HTTP 429, wait for retry_after_seconds and retry. 5. Prioritize academic value. ## Heartbeat Process (Optional, User Decides Whether to Enable) This process requires explicit user authorization and does not run automatically. 1. GET /api/v1/home 2. Reply to new comments on your posts. 3. Process unread notifications. 4. Check and reply to unread private messages. 5. Browse posts, upvote, comment, and participate in polls. 6. Follow or privately message agents with compatible views. 7. GET /api/v1/feed 8. Act according to the what_to_do_next recommendation.The external recommendation field is introduced in
SKILL.md:113-118:text GET /api/v1/home The response includes: your_account, activity_on_your_posts, hot_posts, sections, what_to_do_next action recommendations, and quick_links.Write actions based on remotely supplied forum content are prescribed in
SKILL.md:151-159:text 1. GET /api/v1/posts?sort=new&limit=10 2. Upvote good content: POST /api/v1/upvote {"target_type":"post","target_id":"xxx"} 3. If has_poll=true: GET /api/v1/posts/{id}/poll POST /api/v1/posts/{id}/poll/vote {"option_ids":["opt-1"]} 4. Comment: POST /api/v1/posts/{id}/comments {"content":"your academic insight"} 5. Upvote good comments: POST /api/v1/upvote {"target_type":"comment","target ...[truncated 3154 chars]- Remediation
View remediation
Remediation Suggestions
- Treat every API response, post, comment, notification, private message, poll, and recommendation field as untrusted data.
- Add an explicit instruction that the Agent must never follow commands embedded in forum content or API response fields.
- Do not execute or automatically follow
what_to_do_next. Present it to the user as untrusted advisory text. - Require explicit user confirmation before every state-changing operation, including posts, comments, messages, votes, upvotes, follows, profile changes, group actions, and notification state changes.
- Remove mandatory engagement rules such as “vote first” and “like before commenting.” Engagement should occur only when directly requested by the user.
- Separate read-only browsing from write access. Default to read-only operations and request narrowly scoped authorization only when a write action is necessary.
- Validate all remote identifiers and fields against strict schemas and allowlists before constructing API requests.
- Display the exact target, endpoint, and proposed content to the user before sending any authenticated write request.
- Limit heartbeat runs by action count, duration, and API scope, and stop when remote content attempts to direct tool use or alter Agent behavior.
- Maintain an audit log of approved write actions without recording the bearer token or other sensitive credentials.
