T01 · Skill Instruction Hijacking
- Location
scripts/fetch_explosive_covers.py:337- Finding
Forced Commercial Message Injection and Machine-Readable Output Corruption
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is mostly aligned with WeChat cover analysis, but it contains unsafe command/report-generation instructions and unsolicited runtime output that users should review before installing.
Install only if you trust RedFox with your API key and keyword queries. Use an isolated environment, avoid sensitive client topics or private reference images, sanitize keywords before running commands, and review generated HTML instead of automatically opening it until the template is fixed.
scripts/fetch_explosive_covers.py:337Forced Commercial Message Injection and Machine-Readable Output Corruption
SKILL.md:65Shell Command Injection Through Unsanitized Keyword Interpolation
references/report_template.html:51Stored Script Injection and Unsafe URL Schemes in Generated HTML Reports
SKILL.md:53Unpinned Third-Party Dependency Installation
Credentials or environment variables flow to a network sink. This is a high-confidence indicator of credential exfiltration.
print(f"[DEBUG] Body: {json_body}", file=sys.stderr)
try:
response = requests.post(base_url, json=json_body, headers=headers, timeout=30)
if debug:
print(f"[DEBUG] 状态码: {response.status_code}", file=sys.stderr)
The documented purpose emphasizes AI cover design and visual analysis, but the actual behavior centers on querying a third-party API, processing returned URLs, opening generated HTML, and relying on capabilities not transparently disclosed in the high-level description. This mismatch undermines informed consent and security review because operators may enable the skill expecting local creative assistance while it actually performs external data access and local file/browser actions.
The README says users can 'Simply describe your niche, content topic, or cover needs in natural language — no commands to memorize,' which does not define clear activation boundaries or exclusions. This broad phrasing increases the chance of unintended invocation from ordinary design-related conversation.
Phrases such as 'Design a beauty tutorial cover for me' and 'Choose proposal 1' are generic conversational language that could easily appear outside an intentional skill invocation context. The documentation does not provide disambiguation rules, required context, or exclusion conditions.
The skill explicitly supports uploading reference images but does not warn users how those images will be stored, transmitted, retained, or shared with external services. This creates privacy and data-handling risk, especially if users upload personal, copyrighted, or sensitive images under the assumption they are only used transiently for generation.
The README states users can 'directly use natural language' and 'do not need to remember fixed commands,' which makes the trigger scope unclear and potentially overlaps with ordinary conversation. The file does not provide explicit boundaries, exclusion conditions, or a constrained trigger list to distinguish when the skill should activate versus when it should not.
The skill requires access to environment secrets, network access, and file writing, yet declares no explicit tool scope or permissions boundaries. This creates an overbroad execution surface where a host agent may grant more capability than users expect, increasing the risk of unintended secret access, external data exfiltration, or filesystem modification.
The document instructs use of a script that sends user-supplied keywords to an external API endpoint, but it does not disclose that those inputs leave the local environment or describe any privacy/security implications. In a content-analysis skill, users may provide sensitive campaign topics, client names, or unpublished article ideas, so silent transmission to a third party creates a real data exposure risk.
The HTML declares lang="zh-CN" and the visible report title/content are hard-coded in Chinese, which imposes a specific language/locale on users. Under the policy, this is a natural-language locale constraint unless the skill offers opt-in or clearly documents that it is region-specific, which this file does not.
SQP-3 applies to all file types and covers language or locale policy violations. This file presents all operational instructions in Chinese only and does not indicate that the user can choose another language or that the skill is intentionally limited to a Chinese-speaking context.
The document instructs the agent to write a local HTML file and automatically open it in the user’s browser without any warning or consent flow. That creates observable side effects on the filesystem and desktop environment, and because the report embeds JSON-derived content into an HTML template, auto-opening increases the blast radius if untrusted data is ever rendered unsafely in the template.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
print(f"[DEBUG] Body: {json_body}", file=sys.stderr)
try:
response = requests.post(base_url, json=json_body, headers=headers, timeout=30)
if debug:
print(f"[DEBUG] 状态码: {response.status_code}", file=sys.stderr)
The manifest describes a tool for generating公众号封面设计方案、封面生图 and analyzing high-conversion visual rules. In this file, the implemented behavior is limited to querying a remote hot-article API, deduplicating returned articles/topics, and exposing cover image URLs; there is no image generation, cover design synthesis, or visual-rule analysis logic here.
The instruction '统一使用"爆款封面",禁止使用...' imposes a fixed language/wording policy in natural language. This is a locale/language-style constraint presented as mandatory, and the file does not indicate user opt-in or a justified regional compliance requirement.
The instructions require the agent to always call the script, wait for completion, and present the full dataset without skipping or asking the user, removing user choice and preventing privacy-preserving confirmation before a network action. In this skill context, that makes unintended external disclosure of user interests or sensitive keywords more likely, though the impact is primarily workflow/privacy related rather than direct code execution.
The manifest describes a tool for generating公众号封面 analysis/design outputs, but this template documentation additionally tells the agent to run open ./爆款封面分析报告_{关键词}.html to launch a browser. Automatically invoking a local GUI application is not necessary to the core analytical/design function and represents an extra capability beyond producing the report itself.
The module docstring and CLI description frame the script as '公众号爆款封面数据查询', implying cover-oriented retrieval. However, the main output generated by format_output is a markdown/text table of article metadata such as title, author, 阅读数 and 在看数, with cover URLs only printed secondarily to stderr in limited cases.
This code presents user-facing descriptions, help text, status messages, and final output in Chinese throughout the script. Because the file does not offer a user language/locale option or explain that the tool is intentionally limited to a Chinese-speaking context, it violates the language-choice policy for natural-language behavior.