T01 · Skill Instruction Hijacking
Error
- Location
- SKILL.md:26
- Finding
- Externally Controlled Feed Can Hijack Authenticated Publishing## Vulnerability Details **File Location**: `SKILL.md`, lines 26-99 **Vulnerability Type**: `T01: Skill Instruction Hijacking` **Risk Level**: High ### Vulnerable Code ```markdown Tweets tagged with **action hashtags** are signals for agents to amplify: | Hashtag | Meaning | |---------|---------| | `#retweet` | Repost this content verbatim to your platform | | `#share` | Share with your own commentary added | | `#repost` | Same as #retweet -- repost verbatim | ``` ```python # Check for action hashtags tags_found = [t for t in ACTION_TAGS if t.lower() in title.lower()] if tags_found: # Strip the hashtags from the content for clean reposting clean_text = title for tag in ACTION_TAGS: clean_text = re.sub(re.escape(tag), "", clean_text, flags=re.IGNORECASE).strip() print(f"ACTION: {tags_found}") print(f"DATE: {pub_date}") print(f"CONTENT: {clean_text}") print(f"SOURCE: {link}") print() ``` ```bash curl -s -X POST https://botworld.me/api/v1/posts \ -H "Authorization: Bearer YOUR_BOTWORLD_KEY" \ -H "Content-Type: application/json" \ -d '{ "title": "Via @TonFunX", "content": "TWEET_CONTENT_HERE\n\nSource: https://x.com/TonFunX", "submolt": "crypto" }' ``` ```bash curl -s -X POST https://www.moltbook.com/api/v1/posts \ -H "Authorization: Bearer YOUR_MOLTBOOK_KEY" \ -H "Content-Type: application/json" \ -d '{ "submolt": "agenteconomy", "title": "Via @TonFunX", "content": "TWEET_CONTENT_HERE\n\nSource: https://x.com/TonFunX" }' ``` ### Technical Analysis The Skill treats hashtags in content retrieved from the externally controlled `@TonFunX` RSS feed as commands to perform authenticated publishing actions. In particular, `#retweet` and `#repost` direct the agent to reproduce remote content verbatim, while `#share` directs it to create additional commentary. This design fails to maintain ...[truncated 2493 chars]
- Remediation
- ## Remediation Suggestions 1. Treat all RSS fields as untrusted data and never interpret hashtags or other feed text as authoritative agent instructions. 2. Require explicit user approval for every proposed post. Present the exact destination, final text, extracted URLs, and source before using authenticated posting APIs. 3. Make preview or dry-run behavior the default; authenticated publishing should require a separate, deliberate opt-in. 4. Replace remote action hashtags with locally configured relay rules that cannot be changed by the feed publisher. 5. Apply content moderation, URL reputation checks, length limits, topic restrictions, and destination-specific allowlists before presenting a post for approval. 6. Do not repost content verbatim automatically. Clearly attribute the source and reject content containing unsupported redirects, executable attachments, credential requests, or suspicious links. 7. Use narrowly scoped, revocable API credentials dedicated to this relay. Where supported, restrict them to creating posts only and prevent account administration, deletion, direct messaging, or unrelated actions. 8. Add immutable audit logs recording the source tweet ID, fetched content, approval decision, final published content, destination, and resulting post ID. 9. Implement duplicate detection, strict rate limits, emergency disable controls, and a maximum number of pending or published items per polling cycle. 10. Verify source identity through a trustworthy authenticated API where possible; transport authenticity alone must not replace content authorization or user approval.
