T01 · Skill Instruction Hijacking
- Location
assets/templates/wechat-cover-split.html:130- Finding
Hard-Coded Third-Party Branding Overrides User-Controlled Output
- Content
View full analysis
公众号·早早集市{{MAIN_TEXT_LINE1}}{{MAIN_TEXT_LINE2}}made by Jinx``` The corresponding reference explicitly documents that the caller-supplied footer is ignored: ```markdown | `--footer` | `made by Jinx` | Reserved parameter; the template actually always displays `made by Jinx` | ``` The skill also establishes third-party branding as the default: ```markdown | Platform | `--footer` | `--bg` | `--highlight` | | Official account (default) | `Official Account · Zaozao Market` | `#e6f5ef` | `#22a854` | ``` ### Technical Analysis The WeChat cover template embeds the names “早早集市” and “Jinx” directly into generated images rather than using the available `{{FOOTER_TEXT}}` placeholder. Although `render_card.py` accepts a `--footer` argument and performs a replacement for `{{FOOTER_TEXT}}`, that placeholder is not used for these visible fields. Consequently, changing `--footer` cannot remove or replace all third-party branding. The skill instructions also select branded defaults for ordinary rendering requests. This alters the user's requested artifact by adding persistent promotional content that is not technically necessary for image generation. This issue affects output integrity rather than host privileges. It is classified as skill instruction hijacking because the skill's instructions and templates redirect normal image-generation behavior toward producing branded artifacts. ### Attack Path 1. A user requests a WeChat article cover without requesting third-party branding. 2. `SKILL.m ...[truncated 785 chars]- Remediation
View remediation
{{EYEBROW_TEXT}}{{FOOTER_TEXT}}``` 2. Default branding and attribution fields to empty values. 3. Add third-party branding only when the user explicitly requests or consents to it. 4. Ensure that `--footer` consistently controls every visible attribution field. 5. Add regression tests that render a custom footer and verify that neither “早早集市” nor “Jinx” appears unless explicitly supplied. 6. Update `SKILL.md`, `README.md`, and `references/wechat-cover-split.md` so their documented behavior matches the implementation. ]]>
