T01 · Skill Instruction Hijacking
- Location
SKILL.md:162- Finding
Mandatory Third-Party Promotional Content Hijacks Editorial Output
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill is mostly a frontend renderer, but it unconditionally inserts a third-party promotional CTA into publish-ready article and carousel output.
Install only if you intentionally want every generated carousel or social caption to include the openjournaltheme.com CTA. Review generated SVG/HTML before publishing, especially links and text sourced from briefs, and avoid using the packaging helper on folders that may contain secrets.
SKILL.md:162Mandatory Third-Party Promotional Content Hijacks Editorial Output
scripts/render_carousel.py:212Unescaped Candidate Data Can Inject Active Content into Generated SVG Files
scripts/validate_output.py:74CTA URL Validation Can Be Bypassed by Including the Required URL as a Decoy
The skill promises three deliverables and a specific SENKU handoff contract, yet the finding suggests only partial carousel rendering and local template/file I/O are actually present. That gap can conceal unexpected side effects and causes downstream systems to trust outputs, URLs, or artifact handling that may never be produced correctly, creating integrity and workflow-security issues.
The skill promises three deliverables and a specific SENKU handoff contract, yet the finding suggests only partial carousel rendering and local template/file I/O are actually present. That gap can conceal unexpected side effects and causes downstream systems to trust outputs, URLs, or artifact handling that may never be produced correctly, creating integrity and workflow-security issues.
The skill promises three deliverables and a specific SENKU handoff contract, yet the finding suggests only partial carousel rendering and local template/file I/O are actually present. That gap can conceal unexpected side effects and causes downstream systems to trust outputs, URLs, or artifact handling that may never be produced correctly, creating integrity and workflow-security issues.
The skill references local scripts, templates, validation, and packaging workflows but does not declare explicit tool scope such as file read/write permissions. In an agent setting, undeclared filesystem capability creates a transparency and least-privilege problem: the orchestrator or reviewer cannot reliably bound what the skill may access or modify, increasing the chance of unintended file exposure or tampering.
The manifest description and instructions are written as if the skill operates in Indonesian by default, including generated deliverables like captions, but there is no explicit user language choice or documented locale constraint. Under the policy, forcing a specific language without opt-in is a natural-language policy violation unless clearly justified as region-specific.
The activation criteria are broad ('trigger whenever user asks to render article/publication/carousel slides or when receiving a PASS brief'), which increases the chance of unintended invocation. Over-broad triggering can route unrelated or insufficiently validated content into the skill, causing unauthorized processing, policy bypass of upstream QA assumptions, or accidental publication-oriented transformations.
The document is written as an instruction/specification in Indonesian, which effectively imposes a specific language on users or maintainers. There is no indication that the skill supports language selection or that the Indonesian-only requirement is a justified region-specific constraint.
This script will package any user-supplied directory into a distributable archive, and it preserves all files under that path without enforcing that the target belongs to the stated frontend-rendering skill scope. In the context of a skill meant to render journal/article frontend artifacts, bundling arbitrary local directories is unnecessary and increases the risk of unintended data collection or exfiltration if the script is invoked on sensitive paths or on folders containing secrets.
This Python file contains natural-language descriptions and help text in Indonesian, including the module docstring and multiple check descriptions, without any indication that users can choose another language. The policy explicitly calls for flagging language or locale constraints when they are forced without user opt-in.
The HTML template includes fixed Indonesian strings such as "Sumber", "Sumber utama", and "Sumber sekunder". This imposes a specific language in the rendered output without any visible opt-in or documented locale constraint, which matches the language-policy violation criteria.
The phrase "Support Bahasa Indonesia" is a natural-language locale constraint presented as a fixed CTA variant, and the file does not indicate that language preference is optional or user-selected. Under the policy rule for language/locale, this can be considered a locale-specific preference without explicit opt-in or justification.
No suspicious patterns detected.