Back to skill

Security audit

抖音生成短视频

Security checks for vulnerabilities and agentic risk

Overview

This is a disclosed content-generation pipeline that writes local outputs and can submit generated scripts to named avatar-video APIs when the user provides an API key.

Install only if you want a Chinese-oriented content-to-avatar-video workflow. Expect generated topics/scripts and video requests to be written under the configured output directory and, when an API key is available, sent to the selected avatar provider. Do not use it with confidential content unless you are comfortable with that provider processing it.

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
avatar-generator.js:198
Finding

Unrestricted Remote Download and Arbitrary File Write

Content
View full analysis
{ const file = fs.createWriteStream(outputPath); https.get(videoUrl, (response) => { response.pipe(file); file.on('finish', () => { file.close(); resolve(outputPath); }); }).on('error', reject); }); } ``` ### Technical Analysis The exported `downloadVideo` method accepts `videoUrl` and `outputPath` without validating either value. The supplied URL is passed directly to `https.get()`. A caller that can influence this argument can make the process send HTTPS requests to arbitrary hosts, including potentially accessible internal services. There is no hostname allowlist, IP-address validation, redirect policy, or protection against loopback, private, link-local, and cloud metadata destinations. The supplied output path is passed directly to `fs.createWriteStream()`. No canonicalization or containment check restricts the destination to an intended output directory. An attacker-controlled path can therefore overwrite or create any file writable by the Node.js process. The response is streamed without checking its HTTP status, content type, or size. The request also has no timeout. A remote endpoint could consequently provide an unbounded response, keep the connection open, or cause an error response to be written as though it were a valid video. Partial files are not removed when a request fails. The standard pipeline does not currently invoke this method, so exploitation requires another caller to use the exported method with attacker-influenced arguments. ### Attack Path 1. An application imports `AvatarVideoGenerator` and calls `downloadVideo()` using a URL or output filename derived f ...[truncated 1627 chars]
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • 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
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (13)

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 87)May include surrounding context.

md
编辑 `script-generator.js` 中的 `SCRIPT_TEMPLATES`:

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 103)May include surrounding context.

md
编辑 `pipeline.js` 中的 `searchInformation` 方法。

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The trigger examples are broad enough to match many generic content-creation requests, which can cause the skill to activate in situations where the user may not expect web search, data processing, script generation, and downstream video/API actions. In this skill’s context, broad activation is more dangerous because it can lead to unintended use of external services and file generation as part of an automated pipeline.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The skill documents automatic API calls and video generation but does not warn users that their prompts, organized data, and generated scripts may be transmitted to third-party providers or stored in output files. This is dangerous because users may unknowingly send sensitive or proprietary content to external services and leave persistent artifacts on disk without informed consent.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · avatar-generator.js (reported line 32)May include surrounding context.

js
*/
  getBaseUrl() {
    const urls = {
      'heygen': 'https://api.heygen.com/v1',
      'd-id': 'https://api.d-id.com',
      'synthesia': 'https://api.synthesia.io/v1'
    };

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · avatar-generator.js (reported line 34)May include surrounding context.

js
const urls = {
      'heygen': 'https://api.heygen.com/v1',
      'd-id': 'https://api.d-id.com',
      'synthesia': 'https://api.synthesia.io/v1'
    };
    return urls[this.provider] || urls['heygen'];
  }

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The tool sends user-provided script text to third-party avatar-generation services, but the CLI only prints a generic progress message and does not clearly warn users that their content will leave the local environment. This can expose sensitive or proprietary text to external processors unexpectedly, especially because multiple providers are supported and the transfer is automatic once invoked.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The file's user-facing natural language is consistently Chinese in the title, usage text, comments, error messages, and CLI help output. This imposes a specific language on users without any opt-in or documented locale justification, which matches the language/locale policy violation criteria.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The file's header comments and usage instructions are entirely in Chinese, and the runtime status messages throughout the script also assume Chinese output. This can violate a language/locale policy when a skill forces a specific language without user opt-in or documented justification.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The inline comment at L047 states that network tools are unavailable and that the step therefore uses local data or user input. However, the same pipeline later initializes a video generator with an API key from the environment and calls its generate method, which is clearly intended to submit a remote video-generation request. This is an active contradiction in the file's documentation about runtime capabilities.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The constructor hard-codes the default language to 'zh-CN', and the file’s templates and CLI examples are all Chinese-language by default. This imposes a specific language/locale choice unless the caller explicitly overrides it, which matches the policy concern for forced language without opt-in.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
84% confidence
Finding

The file presents the skill description and usage guidance entirely in Chinese, which can impose a language constraint on users without opt-in or explanation. Under the policy, forcing a specific language without offering choice or documenting a justified locale limitation is a natural-language policy concern.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
86% confidence
Finding

Natural-language strings such as the file header, method comments, errors, and usage output are written in Chinese only. This effectively forces a specific language for user-facing interaction without documenting a language choice or locale-specific constraint.

Content

No source excerpt is available for this finding.