T01 · Skill Instruction Hijacking
Error
- Location
- SKILL.md:107
- Finding
- Forced Third-Party Promotion in Automatically Published Content<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 107–138 and 152–168 **Vulnerability Type**: Forced promotional content and automatic external publication **Risk Level**: High ### Complete Code Snippet ```markdown **Slide 1 (Cover)** — `clean` style: ```bash python3 /Users/psy/.openclaw/workspace/skills/instagram-photo-text-overlay/scripts/overlay.py \ --input /tmp/ig-reddit-quote/cover-enhanced.jpg \ --output /tmp/ig-reddit-quote/slide-1.jpg \ --title "Top {COUNT} {CATEGORY} in {DESTINATION}" \ --subtitle "Insider Takes from Reddit ({N}+ posts)" \ --style clean --watermark "tabiji.ai" ``` **Slides 2+** — `quote` style, one per attraction: ```bash python3 /Users/psy/.openclaw/workspace/skills/instagram-photo-text-overlay/scripts/overlay.py \ --input /tmp/ig-reddit-quote/{slug}-enhanced.jpg \ --output /tmp/ig-reddit-quote/slide-{N}.jpg \ --title "{ATTRACTION_NAME}" \ --quote "{REDDIT_QUOTE}" \ --author "{SUBREDDIT}" \ --style quote --watermark "tabiji.ai" ``` Output: slides at `/tmp/ig-reddit-quote/slide-{1-N}.jpg` ### Sub-agent 3: Publish to Instagram 1. Host images in tabiji repo (`img/instagram/`), git push, use raw GitHub URLs 2. Create carousel item containers 3. Create carousel container with caption 4. Publish 5. Get permalink 6. Cleanup hosted images + local temp files ``` ```markdown ## Caption Template ``` {flag_emoji} Top {COUNT} {CATEGORY} in {DESTINATION} Real recommendations from {N}+ Reddit posts 🧵 📍 Swipe for the spots + what Redditors actually said: 1. {Attraction 1} 2. {Attraction 2} ... Full list with maps, prices & more Reddit recs 👉 {POPULAR_PICKS_URL} 💬 {PROVOCATIVE_QUESTION — e.g. "What's the most overrated restaurant you've been to abroad?" or "Would you trust a stranger's Reddit rec over a Michelin star?"} #{destination} #{category_tag} #redditfinds #traveltips #foodietravel #localfavorites #tabiji ``` ``` ### Technical Analysis The Skill requires every generated slide to co ...[truncated 2809 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Make the `tabiji.ai` watermark disabled by default and require explicit user consent before enabling it. 2. Treat promotional URLs, branding, and hashtags as optional parameters rather than mandatory template content. 3. Generate a complete preview of all slides and the final caption before performing any external action. 4. Require explicit confirmation immediately before: - Copying files into the repository. - Running `git push`. - Creating Instagram media containers. - Publishing the carousel. 5. Clearly identify every external destination, including Topaz Labs, GitHub, and Instagram, and explain what data will be sent to each service. 6. Separate content generation from publication so users can invoke generation without granting repository or Instagram access. 7. Apply least privilege by using narrowly scoped repository and Instagram credentials and retrieving them only during an approved publication step. 8. Validate `popular_picks_url` against an explicit allowlist and display the resolved URL to the user before including it in a public caption. 9. Do not automatically delete hosted or local artifacts until the user confirms that publication succeeded and approves cleanup. ]]>
