Back to skill

Security audit

Videogen

Security checks for vulnerabilities and agentic risk

Overview

The skill does what it advertises, but several implementation flaws could expose API keys, fetch internal URLs, install mutable dependencies, or execute generated code from user text.

Use this only in an isolated workspace with limited filesystem and network access, and prefer throwaway or tightly scoped API keys. Avoid --summarize with MiniMax keys until provider routing is fixed, do not feed untrusted URLs or narration into it, and do not run --force on any path you are not prepared to lose.

Vulnerability Patterns
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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
Findings (6)

T09 · Insecure Skill Coding Practices

Error
Location
scripts/v2/url_extractor.py:274
Finding

MiniMax API Key May Be Disclosed to OpenAI

Content
View full analysis
ExtractedContent: """Call an LLM to generate a summary and key points.""" if not api_key: api_key = os.environ.get("MINIMAX_API_KEY") or os.environ.get("OPENAI_API_KEY", "") if not api_key or not content.full_text: return content try: import openai except ImportError: try: import sys subprocess.run([sys.executable, "-m", "pip", "install", "openai", "-q"], check=True) import openai except Exception: return content text_input = content.full_text[:3000] try: client = openai.OpenAI( api_key=api_key, base_url="https://api.openai.com/v1" if "sk-" in api_key else "https://api.minimax.io/v1" ) ``` ### Technical Analysis The function selects `MINIMAX_API_KEY` before `OPENAI_API_KEY`, but chooses the destination provider by checking whether the selected credential contains the generic substring `sk-`. The Skill documentation states that MiniMax credentials can begin with `sk-cp-`. Such a key satisfies the condition `"sk-" in api_key`, causing the code to configure `https://api.openai.com/v1` as the API endpoint. The MiniMax credential is then transmitted to an unrelated third-party provider as an authorization credential. Provider routing based on a partial credential prefix is not a safe trust-boundary decision. Credentials must be explicitly associated with their intended provider and endpoint. ### Attack Path 1. A user configures only `MINIMAX_API_KEY`, using a documented MiniMax key beginning with `sk-cp-`. 2. The user invokes URL extraction with the summarization option. 3. `generate_summary()` selects `MIN ...[truncated 791 chars]
Remediation
View remediation

T01 · Skill Instruction Hijacking

Error
Location
scripts/v2/remotion_generator.py:294
Finding

Hardcoded Promotional Message Is Injected into Generated Videos

Content
View full analysis
80 && (
关注我,继续拆解 AI 时代的工程能力
)} ``` The Skill checklist additionally mandates an engagement prompt: ```markdown - [ ] 结尾有关注引导 ``` The embedded Chinese text translates to a fixed request that viewers follow the content publisher. ### Technical Analysis The closing-scene template includes a hardcoded promotional message that is independent of user input. When this template is selected, the renderer inserts the message into the final video even if the user did not request promotional language. This affects output integrity because the generated media contains an unsolicited statement that can be attributed to the user or the user's account. The Skill instructions reinforce this behavior by requiring a closing engagement prompt. ### Attack Path 1. A user asks the Skill to generate a video. 2. The generated project includes the predefined closing-scene template. 3. Once the scene reaches frame 81, the fixed promotional message is displayed. 4. Remotion renders that message into the final video. 5. The resulting media contains promotional language without requiring explicit user approval. ### Impact Assessment The issue does not obtain system privileges or access sensitive local resources. Its impact is manipulation of user-visible output, unauthorized promotion, reputational harm, and potentially misleading attribution. The behavior is especially problematic for professional, neutral, white-label, or third-party publishing workflows where the output must contain only user-approved messaging. ]]>
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
scripts/v2/url_extractor.py:185
Finding

Unrestricted URL Fetching Enables Server-Side Request Forgery

Content
View full analysis
ExtractedContent: """Generic webpage extraction.""" headers = { "User-Agent": "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)", } text = "" method = "bs4_fallback" title = "Unknown title" author = None publish_date = None if HAS_TRAFILATURA: try: downloaded = trafilatura.fetch_url(url) if downloaded: text = trafilatura.extract(downloaded, include_comments=False) method = "trafilatura" except Exception: pass if not text: resp = requests.get(url, headers=headers, timeout=15) resp.encoding = resp.apparent_encoding or "utf-8" soup = BeautifulSoup(resp.text, "html.parser") ``` Routing does not impose a destination policy: ```python def extract_content(url: str) -> ExtractedContent: """Automatically select an extraction method based on URL type.""" url_lower = url.lower() if "mp.weixin.qq.com" in url_lower: return extract_wechat(url) elif "zhihu.com" in url_lower or "zhuanlan.zhihu.com" in url_lower: return extract_zhihu(url) else: return extract_generic(url) ``` ### Technical Analysis The extractor accepts a user-controlled URL and performs outbound requests without validating: - The URL scheme - The destination hostname - The resolved IP address - The destination port - Redirect destinations - Loopback, private, link-local, multicast, or reserved address ranges - DNS rebinding between validation and connection - Response size or expected content type As a result, the ...[truncated 1438 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
scripts/v2/remotion_generator.py:315
Finding

User-Controlled Narration and Labels Are Unsafely Interpolated into Executable TSX

Content
View full analysis
str: """Generate an individual scene TSX file.""" template = COMPONENT_TEMPLATES.get(scene.visual_type, COMPONENT_TEMPLATES["generic"]) content = template content = content.replace("SCENE_NAME", scene.name) content = content.replace("SCENE_LABEL", scene.label) content = content.replace("DURATION_SEC", str(scene.duration_sec)) narration = scene.narration[:80].replace("`", "\\`").replace("\\", "\\\\") content = content.replace("NARRATION", narration) content = content.replace("SCENE_NARRATION", scene.narration[:60]) return content ``` Narration is also inserted into JavaScript template literals: ```python narrations = ",\n".join( f' {s.name}: `{s.narration.replace("`", "\\`")}`' for s in scenes ) ``` Generated files are subsequently compiled and rendered by Remotion. ### Technical Analysis User-provided scene labels and narration are inserted into executable TSX source code using string replacement. Escaping only backticks is insufficient for JavaScript template literals because `${...}` expressions remain executable. Generic scene labels and narration are also inserted directly into JSX text without context-appropriate encoding. The result is a code-generation boundary violation: data supplied as video content can change the syntactic structure or runtime behavior of the generated program. Although scene identifiers receive partial character filtering through `to_pascal()`, the displayed labels and narration do not receive equivalent safe serialization. The renderer later invokes the generated project through `npx remotion render`, creating an execution path for injected JavaScrip ...[truncated 1273 chars]
Remediation
View remediation

T08 · Insecure Dependencies

Warning
Location
scripts/v2/url_extractor.py:27
Finding

Application Code Automatically Installs Unpinned Dependencies at Runtime

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/v2/run_remotion_render.py:46
Finding

Force Setup Can Recursively Delete an Arbitrary User-Supplied Directory

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Taint TrackingDirect Taint Flow, Variable-Mediated Taint Flow, Credential Exfiltration Chain
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
Findings (240)

Known Vulnerable Dependency: loader-utils==2.0.2 — 3 advisory(ies): CVE-2022-37603 (loader-utils is vulnerable to Regular Expression Denial of Service (ReDoS) via u); CVE-2022-37601 (Prototype pollution in webpack loader-utils); CVE-2022-37599 (loader-utils is vulnerable to Regular Expression Denial of Service (ReDoS))

Critical
Category
Supply Chain
Confidence
93% confidence
Finding

loader-utils 2.0.2 has known ReDoS and prototype-pollution issues. Because this package is used in bundling/build tooling, a crafted loader query or attacker-controlled build input could cause process hangs or unsafe object mutation during asset processing, which is relevant in an automation pipeline that assembles user-influenced media projects.

Content

No source excerpt is available for this finding.

Tainted flow: 'req' from os.environ.get (line 786, credential/environment) → urllib.request.urlopen (network output)

Critical
Category
Data Flow
Confidence
90% confidence
Finding

Credentials or environment variables flow to a network sink. This is a high-confidence indicator of credential exfiltration.

Content

Scanner excerpt · scripts/v2/tts_harness.py (reported line 787)May include surrounding context.

python
try:
        data = json.dumps(payload).encode("utf-8")
        req = urllib.request.Request(url, data=data, headers=headers, method="POST")
        with urllib.request.urlopen(req, timeout=60) as resp:
            body = resp.read()
            ct = resp.headers.get("Content-Type", "")
            # 如果返回 JSON 而不是音频,说明失败了

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

This variant points to webpage scraping, metadata extraction, summarization, and dynamic dependency installation that are outside the headline purpose of video generation. Those behaviors materially increase attack surface by allowing arbitrary remote content ingestion and potential execution of package installation flows that users may not expect from the skill description.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

This variant points to webpage scraping, metadata extraction, summarization, and dynamic dependency installation that are outside the headline purpose of video generation. Those behaviors materially increase attack surface by allowing arbitrary remote content ingestion and potential execution of package installation flows that users may not expect from the skill description.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

This variant points to webpage scraping, metadata extraction, summarization, and dynamic dependency installation that are outside the headline purpose of video generation. Those behaviors materially increase attack surface by allowing arbitrary remote content ingestion and potential execution of package installation flows that users may not expect from the skill description.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

This variant points to webpage scraping, metadata extraction, summarization, and dynamic dependency installation that are outside the headline purpose of video generation. Those behaviors materially increase attack surface by allowing arbitrary remote content ingestion and potential execution of package installation flows that users may not expect from the skill description.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

This variant points to webpage scraping, metadata extraction, summarization, and dynamic dependency installation that are outside the headline purpose of video generation. Those behaviors materially increase attack surface by allowing arbitrary remote content ingestion and potential execution of package installation flows that users may not expect from the skill description.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

This variant points to webpage scraping, metadata extraction, summarization, and dynamic dependency installation that are outside the headline purpose of video generation. Those behaviors materially increase attack surface by allowing arbitrary remote content ingestion and potential execution of package installation flows that users may not expect from the skill description.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

This variant points to webpage scraping, metadata extraction, summarization, and dynamic dependency installation that are outside the headline purpose of video generation. Those behaviors materially increase attack surface by allowing arbitrary remote content ingestion and potential execution of package installation flows that users may not expect from the skill description.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

This variant points to webpage scraping, metadata extraction, summarization, and dynamic dependency installation that are outside the headline purpose of video generation. Those behaviors materially increase attack surface by allowing arbitrary remote content ingestion and potential execution of package installation flows that users may not expect from the skill description.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

This variant points to webpage scraping, metadata extraction, summarization, and dynamic dependency installation that are outside the headline purpose of video generation. Those behaviors materially increase attack surface by allowing arbitrary remote content ingestion and potential execution of package installation flows that users may not expect from the skill description.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

This variant points to webpage scraping, metadata extraction, summarization, and dynamic dependency installation that are outside the headline purpose of video generation. Those behaviors materially increase attack surface by allowing arbitrary remote content ingestion and potential execution of package installation flows that users may not expect from the skill description.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

This variant points to webpage scraping, metadata extraction, summarization, and dynamic dependency installation that are outside the headline purpose of video generation. Those behaviors materially increase attack surface by allowing arbitrary remote content ingestion and potential execution of package installation flows that users may not expect from the skill description.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

This variant points to webpage scraping, metadata extraction, summarization, and dynamic dependency installation that are outside the headline purpose of video generation. Those behaviors materially increase attack surface by allowing arbitrary remote content ingestion and potential execution of package installation flows that users may not expect from the skill description.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

This variant points to webpage scraping, metadata extraction, summarization, and dynamic dependency installation that are outside the headline purpose of video generation. Those behaviors materially increase attack surface by allowing arbitrary remote content ingestion and potential execution of package installation flows that users may not expect from the skill description.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

This variant points to webpage scraping, metadata extraction, summarization, and dynamic dependency installation that are outside the headline purpose of video generation. Those behaviors materially increase attack surface by allowing arbitrary remote content ingestion and potential execution of package installation flows that users may not expect from the skill description.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

This variant points to webpage scraping, metadata extraction, summarization, and dynamic dependency installation that are outside the headline purpose of video generation. Those behaviors materially increase attack surface by allowing arbitrary remote content ingestion and potential execution of package installation flows that users may not expect from the skill description.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

This variant points to webpage scraping, metadata extraction, summarization, and dynamic dependency installation that are outside the headline purpose of video generation. Those behaviors materially increase attack surface by allowing arbitrary remote content ingestion and potential execution of package installation flows that users may not expect from the skill description.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

This variant points to webpage scraping, metadata extraction, summarization, and dynamic dependency installation that are outside the headline purpose of video generation. Those behaviors materially increase attack surface by allowing arbitrary remote content ingestion and potential execution of package installation flows that users may not expect from the skill description.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

This variant points to webpage scraping, metadata extraction, summarization, and dynamic dependency installation that are outside the headline purpose of video generation. Those behaviors materially increase attack surface by allowing arbitrary remote content ingestion and potential execution of package installation flows that users may not expect from the skill description.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
93% confidence
Finding

This variant points to webpage scraping, metadata extraction, summarization, and dynamic dependency installation that are outside the headline purpose of video generation. Those behaviors materially increase attack surface by allowing arbitrary remote content ingestion and potential execution of package installation flows that users may not expect from the skill description.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

This variant points to webpage scraping, metadata extraction, summarization, and dynamic dependency installation that are outside the headline purpose of video generation. Those behaviors materially increase attack surface by allowing arbitrary remote content ingestion and potential execution of package installation flows that users may not expect from the skill description.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

This variant points to webpage scraping, metadata extraction, summarization, and dynamic dependency installation that are outside the headline purpose of video generation. Those behaviors materially increase attack surface by allowing arbitrary remote content ingestion and potential execution of package installation flows that users may not expect from the skill description.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
94% confidence
Finding

This variant points to webpage scraping, metadata extraction, summarization, and dynamic dependency installation that are outside the headline purpose of video generation. Those behaviors materially increase attack surface by allowing arbitrary remote content ingestion and potential execution of package installation flows that users may not expect from the skill description.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

This variant points to webpage scraping, metadata extraction, summarization, and dynamic dependency installation that are outside the headline purpose of video generation. Those behaviors materially increase attack surface by allowing arbitrary remote content ingestion and potential execution of package installation flows that users may not expect from the skill description.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.