Back to skill

Security audit

CreateVideo - Podcast to Video

Security checks for vulnerabilities and agentic risk

Overview

The skill mostly matches its video-creation purpose, but it asks users to install an unpinned third-party MCP server with an API key and persistent configuration, so it needs review before use.

Install only if you trust the ListenHub MCP package publisher and are comfortable sending the video copy to ListenHub. Pin and review the MCP package version before use, avoid running it as root, use a narrowly scoped API key, and sanitize generated filenames before creating videos.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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
Findings (2)

T08 · Insecure Dependencies

Warning
Location
SKILL.md:148
Finding

Unpinned Third-Party MCP Package Is Downloaded and Executed

Content
View full analysis
-- npx -y @marswave/listenhub-mcp-server ``` `references/listenhub-guide.md:3-7`: ```markdown ## MCP Server - **Package name**: `@marswave/listenhub-mcp-server` - **Environment variable**: `LISTENHUB_API_KEY` - **Claude Code installation**: `claude mcp add listenhub --env LISTENHUB_API_KEY= -- npx -y @marswave/listenhub-mcp-server` ``` ### Technical Analysis The installation command uses `npx -y` to retrieve and execute `@marswave/listenhub-mcp-server` without specifying an exact reviewed version or integrity value. Consequently, the effective code executed by users can change after the Skill itself has been audited. The `-y` option also suppresses interactive confirmation. If the package publisher account, package registry, release pipeline, or a future package version is compromised, following the documented command can immediately execute attacker-controlled package lifecycle or runtime code. The package is launched with `LISTENHUB_API_KEY` in its environment. A compromised release would therefore be able to read and disclose that credential in addition to exercising the normal filesystem, process, and network access of the account running the installation. ### Attack Path 1. An attacker compromises the package publisher, registry account, or upstream release process. 2. The attacker publishes a malicious version under the existing package name. 3. A user follows the Skill's documented `npx -y` installation command. 4. `npx` resolves the current package version because no exact version is pinned. 5. The malicious package executes with the privileges of the invoking account. 6. The package reads `LISTENHUB_ ...[truncated 888 chars]
Remediation
View remediation
``` 2. Commit and enforce a package lockfile where the deployment model supports it. 3. Verify package integrity through lockfile hashes, registry integrity metadata, or a separately published checksum. 4. Document the expected registry, package publisher, and approved package version. 5. Review new versions before updating the pinned dependency. 6. Run the MCP server under a dedicated, non-root account with access only to required project directories. 7. Provide the API key through a narrowly scoped secret mechanism and rotate it if package compromise is suspected. 8. Apply outbound network restrictions where practical so the process can communicate only with required ListenHub endpoints. ]]>

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:70
Finding

Content-Derived Title Is Used as an Output Path Without Filename Validation

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (8)

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The workflow sends user-provided script content to the external ListenHub service to generate podcast audio, but the skill description does not clearly warn users that their input leaves the local environment. This can lead to unintended disclosure of sensitive or proprietary text, especially because users may assume a local video tool processes content entirely on-device.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The workflow hard-codes language: "zh", and the defaults section also states the podcast language is Chinese. This is a natural-language policy concern because the skill imposes a specific language without opt-in or an explicit region-specific justification.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
94% confidence
Finding

The skill installs and runs an MCP server via npx -y @marswave/listenhub-mcp-server without pinning a specific package version or integrity. That creates a supply-chain risk: future upstream releases, dependency compromise, or typosquatting-style replacement could cause arbitrary code to execute in the agent environment during installation or runtime.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

This markdown skill content forces a specific language presentation for all users, which can violate language/locale policy when no opt-in or alternative is provided. The document contains no indication that Chinese is optional, user-selected, or required for a region-specific use case.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

SQP-3 applies to all file types and includes language or locale policy violations. This document presents all instructions in Chinese only, with no user opt-in for language and no explanation that the skill is intended exclusively for a Chinese-speaking or region-specific audience.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
95% confidence
Finding

The guide instructs installation/execution of an MCP server via npx -y @marswave/listenhub-mcp-server without pinning a specific version. That creates a supply-chain risk: a future compromised or malicious package release would be pulled automatically and executed in the agent environment, potentially exposing API keys or executing arbitrary code.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

This markdown file contains natural-language instructions and examples exclusively in Chinese, and nowhere indicates that the user may choose another language or that the locale is intentionally constrained. Under the policy rule for language or locale restrictions, forcing a specific language without opt-in is a reportable issue.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
85% confidence
Finding

This is a markdown file, so SQP-2 applies to omitted warnings in the skill description. Line L50 directs a file-affecting operation ('下载音频文件到任务目录') but provides no caution about where files are written, potential overwrites, or reviewing the destination first.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.