T01 · Skill Instruction Hijacking
- Location
SKILL.md:42- Finding
Forced Third-Party Branding and Promotional Content Injection
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill can generate Instagram card images, but it also hardcodes a specific account brand, includes credential-backed posting and Telegram sharing steps, and ships an unsafe JPEG conversion script.
Review this skill before installing. Only use it if you want the hardcoded @lio_universe_00 branding, are comfortable with Instagram or Telegram publishing steps, and can avoid or fix the unsafe --jpeg conversion path. Prefer removing the fixed handle, requiring explicit upload confirmation, vendoring fonts locally, and replacing execSync with a non-shell API.
SKILL.md:42Forced Third-Party Branding and Promotional Content Injection
scripts/screenshot.js:17OS Command Injection Through the JPEG Output Directory
assets/dark-editorial.css:4Unpinned Remote Stylesheet Loaded During Browser Rendering
Referencing a local .env file in an automated posting flow indicates access to stored credentials for an external service. In the context of a content-generation skill, this broadens capability from local file creation to credential-backed account actions, increasing the risk of unauthorized posting, misuse of tokens, or accidental exposure of secrets through logs or downstream tooling.
cd /Users/gyeuun/.openclaw/workspace/skills/instagram-content-studio
node scripts/post-image.js \
--env .env \
--caption '캡션 텍스트' \
./output/cover.jpg ./output/card_1.jpg ...
The skill’s declared purpose is card-news/image generation, but the documented workflow expands into external Instagram posting via a separate skill. That creates an unnecessary data-transfer boundary and can cause generated content, captions, and local files to be sent to third-party services without clear user consent or scoping.
The skill describes API-based Instagram upload using a local .env file but provides no user-facing warning that credentials will be accessed and content will be transmitted externally. This violates least surprise and can lead to silent use of stored secrets and unintended publication or data disclosure.
Including Telegram-based transmission as a fallback introduces an unrelated exfiltration path that is not necessary for generating card-news images. Even if intended for manual operations, it enables content and potentially sensitive business material to be routed through an external messaging platform without defined safeguards.
The code builds a shell command with interpolated file paths and executes it via execSync. Although the output names are internally derived, the output directory is user-controlled, so shell metacharacters in that path can trigger command injection when JPEG mode is used. In this skill context, processing user-supplied HTML already expands the attack surface, making shelling out for image conversion more dangerous than necessary.
The stylesheet imports a font directly from jsDelivr, which creates a runtime dependency on a third-party network resource. In a screenshot-generation skill, this can leak request metadata, reduce reproducibility, and allow build/render failures or unintended content changes if the remote asset becomes unavailable or is modified upstream.
Loading a remote font without disclosure is a real privacy and transparency issue because rendering this CSS causes an external request that users or operators may not expect. In this skill's context, the risk is limited but still relevant because automated Playwright-based rendering may occur in backend environments where hidden network egress is undesirable.
This code invokes a system subprocess via execSync to run sips, which is a safety-relevant operation for code files under the missing-warning rule. Although there is an internal comment describing the conversion step, there is no user-facing disclosure at runtime or prompt indicating that an external system command will be executed.
Detected: suspicious.dangerous_exec