Back to skill

Security audit

Fashion Video Creator

Security checks for vulnerabilities and agentic risk

Overview

The skill is mostly a coherent fashion-video generator, but it asks users to paste a reusable API key into chat and sends content to an external image service without enough secure-handling guidance.

Install only if you are comfortable using Volcano Engine/Seedream for this workflow. Do not paste your API key into chat; use a secret manager or local environment variable, use a dedicated low-scope key with quotas, and rotate any key previously shared in conversation. Avoid putting confidential product plans, personal data, or real-person likeness requests in prompts sent to the external service.

Vulnerability Patterns
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:46
Finding

Plaintext API Credential Solicitation Through Conversational Context

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 46-48
Vulnerability Type: Plaintext sensitive credential handling
Risk Level: Medium

markdown
**Q1: Image Generation Service**
> "You first need an AI service account capable of generating images. This tool currently uses the Seedream model on the Volcano Engine Ark platform.
> Do you have a Volcano Engine Ark account? If so, please provide your API Key, which can be found under Volcano Engine Ark Console -> API Key Management."

Technical Analysis

The skill explicitly directs the user to submit a reusable Volcano Engine API key through the conversation. This places the credential in the agent's conversational context rather than obtaining it through an environment variable, secret manager, or protected credential prompt.

Conversationally supplied secrets may be retained in chat history, execution traces, application logs, debugging telemetry, exported transcripts, or model context. Any operator or service with access to those records could potentially recover and reuse the key. The subsequent workflow uses the credential as a bearer token when communicating with the declared Volcano Engine API, meaning possession of the exposed value may be sufficient to authenticate requests.

No evidence was found that the skill intentionally transmits the key to an unrelated endpoint. The vulnerability is the insecure collection and handling method itself.

Attack Path

  1. A user activates the fashion-video-creator skill.
  2. The skill asks the user to provide a Volcano Engine API key in the conversation.
  3. The user pastes a valid reusable key into the chat.
  4. The credential becomes part of the conversation record and may also appear in logs, traces, backups, support exports, or debugging systems.
  5. An individual who obtains access to any retained record extracts the bearer token.
  6. The exposed key is reused against Volcano Engine APIs until it exp ...[truncated 578 chars]
Remediation
View remediation

Remediation Suggestions

  1. Remove all instructions asking users to paste API keys into chat.
  2. Require the credential to be supplied through the ARK_API_KEY environment variable or a supported secret-management facility.
  3. Check only whether the secret is available; never print, echo, interpolate into errors, or include it in generated output.
  4. Redact authorization headers and credential-like values from HTTP diagnostics, traces, exception messages, and logs.
  5. Use a dedicated, revocable key restricted to the minimum required Volcano Engine models, endpoints, quota, and billing scope.
  6. Provide secure setup guidance, such as:
bash
export ARK_API_KEY="value-entered-locally"

The command should be entered directly in the user's trusted local environment and should not be sent through the conversation. 7. If the runtime supports secret prompts or operating-system credential stores, prefer those mechanisms over shell-history-visible environment setup. 8. Recommend immediate rotation of any key previously disclosed through chat, logs, issue trackers, or exported transcripts.

Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (15)

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The README advertises very broad natural-language triggers like '帮我做一个穿搭视频' without any activation boundaries, negative examples, or scoping constraints. In an agent ecosystem, this increases the chance of accidental invocation or prompt-routing collisions, which can cause the skill to engage in contexts the user did not explicitly intend and may lead to unexpected generation of external-platform SOPs or media prompts.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
87% confidence
Finding

The English examples are similarly broad ('Create a fashion video for a dress', 'Batch generate 5 outfit video prompts') and do not establish explicit activation constraints or disambiguation from ordinary conversation. This can cause unintentional skill selection by a host agent, especially in environments where multiple skills compete on semantic similarity.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The activation phrases include broad terms like '生成模特', '虚拟模特', and 'create outfit content', which can match ordinary creative requests and cause the skill to trigger unexpectedly. Unintended activation can expose users to unnecessary credential collection, irrelevant workflow constraints, or actions they did not intend, especially because this skill immediately asks for an API key.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The skill explicitly instructs the user to provide an API key in chat, but does not warn against sharing secrets in plaintext or direct the user to a secure secret-handling mechanism. This creates a real risk of credential exposure through chat logs, downstream tooling, prompt history, or accidental reuse by the agent.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The file hard-codes different speaking styles and personas based on gender, including normative language about how female and male dialogue should sound. This imposes a communication-style policy without indicating user choice or documented justification, which fits the category of natural-language policy concerns in the file.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

These presets explicitly enable outputs up to 'indistinguishable from real photo' and 'RAW photograph of a real person,' which exceeds a virtual-model/fashion mockup framing and materially increases the chance of deceptive synthetic-person generation. In a skill designed to create model imagery at scale, that capability can be repurposed for impersonation, non-consensual likeness simulation, or misleading commercial/social content.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The file explicitly labels the Seedream 5.0 realism anchors as "Chinese natural language" and all corresponding prompt templates are written only in Chinese. This imposes a specific language choice in the skill content without stating that the user can choose another language or opt in to Chinese output.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The Chinese Seedream 5.0 presets directly instruct generation of images that are 'unable to be distinguished from real photographs' and even 'completely unretouched RAW portrait photos.' That is a clear escalation from virtual avatar generation into realistic synthetic human fabrication, which is risky in a consumer-facing content creation workflow.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The style presets for Seedream 5.0 are provided entirely in Chinese, while the file does not state that this locale restriction is optional or model-mandated with user awareness. Under the policy, forcing a specific language without user opt-in is a natural-language policy concern.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The file hard-codes Chinese prompt text throughout and explicitly defines "CHARS_PER_SECOND = 4 (Chinese speaking rate)", indicating a fixed language/locale assumption. There is no user opt-in, alternative locale handling, or explanation that this skill is intentionally limited to a Chinese-only regional workflow.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The document specifies sending prompts and an API key to a third-party image-generation endpoint but does not clearly disclose that user-provided content will leave the local environment and be transmitted to an external service. In a content-creation skill, prompts may contain sensitive business data, personal data, or proprietary creative material, so the omission can lead to unintended data disclosure and unsafe credential handling assumptions.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The file instructs that Seedream 5.0 uses a Chinese natural-language prompt while Seedream 4.5 uses English keyword stacking, which is a language constraint expressed in natural language. Because the document does not present this as an opt-in user choice or justify it as a necessary region-specific requirement, it may violate the language/locale policy.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
76% confidence
Finding

The README states bilingual support as a fixed capability, but the usage instructions do not tell the user how language is selected or confirm that output language follows user preference. This can create a locale-policy issue if the skill defaults to a language without explicit opt-in.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
76% confidence
Finding

Natural-language policy review applies to all file types. While offering Chinese and English is not inherently problematic, the README does not explain whether the skill asks users to choose a language or respects conversation locale, leaving room for forced-language behavior.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
85% confidence
Finding

The parameter list specifies 'Language: zh / en — default: zh', which imposes a locale default that may override the user's preferred language if not explicitly chosen. Under the policy, language or locale constraints should be user-selected or clearly justified rather than silently defaulted.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.