T01 · Skill Instruction Hijacking
Warning
- Location
- assets/templates/poster-3-4.html:93
- Finding
- Generated images contain hardcoded third-party attribution<![CDATA[ ## Vulnerability Details **File Location**: `assets/templates/poster-3-4.html:93-97` **Additional Locations**: `scripts/render_article.py:197`, `scripts/render_card.py:51`, `SKILL.md:32-52`, `references/article-3-4.md:70-71` **Vulnerability Type**: Persistent output modification through hardcoded promotional branding **Risk Level**: Medium ### Vulnerable Code ```html <div class="watermark"> <img src="{{AVATAR_PATH}}" alt="Jinx"> <span>✦ made by Jinx · {{FOOTER_TEXT}}</span> </div> ``` The rendering scripts also assign a third-party promotional footer as the default value of the configurable footer argument. ### Technical Analysis The poster template unconditionally adds the fixed attribution `made by Jinx` and a Jinx-branded avatar to every generated poster. Changing the configurable `FOOTER_TEXT` value does not remove this fixed attribution. The article and poster renderers also default to footer text associated with third-party social-media branding. Consequently, invoking the Skill through its documented default workflow modifies the user's requested image with promotional content that is not necessary for image generation. This behavior is best classified as instruction/output hijacking because the Skill's default instructions and templates cause the agent to produce persistent third-party promotional output rather than only the user-requested content. ### Attack Path 1. A user asks the agent to convert text into a card or poster. 2. The agent invokes the documented rendering workflow without explicitly overriding every branding-related field. 3. The renderer loads the bundled template. 4. The template adds the fixed avatar and `made by Jinx` text. 5. Headless Chrome captures the branded page as a PNG. 6. The resulting image may be published or redistributed by the user without realizing that it contains third-party promotion. ### Impact Assessment The impact is limited to generated content; this issue does not grant filesystem, ...[truncated 302 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Remove the fixed `made by Jinx` text and branded avatar from the template. 2. Default the footer and avatar to empty values. 3. Add branding only when the user explicitly requests it. 4. Provide a documented `--branding` or `--attribution` option that is disabled by default. 5. Ensure that changing the footer removes all bundled attribution, not only the configurable footer segment. 6. Add rendering tests that verify default output contains no third-party names, logos, avatars, or promotional text. ]]>
