Back to skill

Security audit

Evolink Video — AI Video Generation (Sora, Kling, Veo 3, Seedance)

Security checks for vulnerabilities and agentic risk

Overview

The skill is mostly coherent for AI video generation, but its setup asks users to run a mutable npm MCP server with an API key, which deserves review before installation.

Review the MCP package before enabling it. Prefer pinning `@evolinkai/evolink-media` to a specific reviewed version, use a narrowly scoped or revocable Evolink API key, and avoid uploading sensitive media unless you intend it to be hosted by Evolink and accessible through generated URLs until expiry or deletion.

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

T08 · Insecure Dependencies

Warning
Location
SKILL.md:50
Finding
Unpinned Third-Party Package Download and Execution## Vulnerability Details **File Location**: `SKILL.md`, lines 50–54 **Vulnerability Type**: Unpinned third-party dependency execution **Risk Level**: Medium ### Vulnerable Code ```markdown **mcporter** (recommended): `mcporter call --stdio "npx -y @evolinkai/evolink-media@latest" list_models` **Claude Code:** `claude mcp add evolink-media -e EVOLINK_API_KEY=your-key -- npx -y @evolinkai/evolink-media@latest` **Claude Desktop / Cursor** — add MCP server with command `npx -y @evolinkai/evolink-media@latest` and env `EVOLINK_API_KEY=your-key`. See `references/video-api-params.md` for full config JSON. ``` ### Technical Analysis The setup instructions use `npx -y` to download and execute `@evolinkai/evolink-media@latest`. The `@latest` tag is mutable, so the package executed by users can differ from the version that existed when this skill was audited. The `-y` option suppresses the normal installation confirmation, further reducing opportunities for users to inspect what will run. The package is referenced through its official scoped npm name and associated project links, and there is no evidence in the audited files that the current package is malicious. Nevertheless, the absence of exact-version and integrity pinning creates a supply-chain trust boundary: compromise of the npm publisher account, package distribution channel, or a future release could replace the effective executable payload without modifying this repository. Because the package is configured with `EVOLINK_API_KEY` in its environment, any malicious package version would be able to read that credential while running. It would also execute with the operating-system privileges of the user who launches the MCP server. ### Attack Path 1. An attacker compromises the npm publisher account, package release workflow, or another component of the package distribution channel. 2. The attacker publishes a malicious release and assigns it to the mutable `latest` distribution tag. 3. A user follows th ...[truncated 1159 chars]
Remediation
## Remediation Suggestions 1. Replace `@latest` with an exact, reviewed package version, for example: ```bash npx -y @evolinkai/evolink-media@2.0.1 ``` 2. Review the selected release before recommending it and update the pinned version only through a controlled security-review process. 3. Where the installation environment permits, use a lockfile and verify the package's resolved version and integrity hash. 4. Avoid silently accepting package execution when practical. Remove `-y` for interactive installation flows or clearly warn users that the command downloads and executes third-party code. 5. Run the MCP server under a dedicated, least-privileged account or sandbox with access only to required files and network destinations. 6. Provide the API key only to the MCP process, avoid exposing unrelated secrets in its environment, and use a narrowly scoped or revocable credential if the service supports one. 7. Document package provenance, the expected npm publisher, and a verification procedure so users can detect unexpected ownership or release changes before execution.
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • System Prompt LeakageDirect Leakage, Indirect Extraction, Tool-Based Exfiltration
Findings (11)

External Transmission

Medium
Category
Data Exfiltration
Content
| Service | URL |
|---------|-----|
| Generation API | `https://api.evolink.ai/v1/videos/generations` (POST) |
| Task Status | `https://api.evolink.ai/v1/tasks/{task_id}` (GET) |
| File API | `https://files-api.evolink.ai/api/v1/files/*` (upload/list/delete) |
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
| Service | URL |
|---------|-----|
| Generation API | `https://api.evolink.ai/v1/videos/generations` (POST) |
| Task Status | `https://api.evolink.ai/v1/tasks/{task_id}` (GET) |
| File API | `https://files-api.evolink.ai/api/v1/files/*` (upload/list/delete) |
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Rp1

Medium
Category
MCP Rug Pull
Confidence
96% confidence
Finding
The skill instructs users to launch an MCP server via `npx -y @evolinkai/evolink-media` without pinning an exact package version. This creates a supply-chain risk: future package updates or a compromised publisher account could cause unreviewed code to run automatically in the user's environment with access to the configured `EVOLINK_API_KEY`. Because this is an install/run instruction, the risk is real even though the markdown itself does not execute code.

Rp1

Medium
Category
MCP Rug Pull
Confidence
96% confidence
Finding
This line again directs users to run an unpinned npm package through `npx`, which fetches the latest published code at execution time. If the package is updated maliciously or a dependency is compromised, the executed code could access local files, environment variables, and the `EVOLINK_API_KEY` provided on the command line or in the environment.

Rp1

Medium
Category
MCP Rug Pull
Confidence
96% confidence
Finding
The desktop/cursor setup guidance repeats the same unpinned `npx` pattern, meaning users may continually install or run whatever code is currently published under that package name. In the context of an MCP server that handles media and authenticates with an API key, compromise could lead to credential theft, arbitrary code execution, or unauthorized data access/transmission.

Missing User Warnings

Medium
Confidence
96% confidence
Finding
The document explicitly instructs users to upload images to a file hosting service and then use the returned `file_url` as a publicly accessible link, but it does not warn that uploaded content becomes accessible via a public URL and expires only after 72 hours. In a video-generation workflow, users may upload private photos, copyrighted media, or sensitive business assets, so omitting a privacy warning materially increases the risk of unintentional data exposure.

External Transmission

Medium
Category
Data Exfiltration
Content
## Upload a Local File

```bash
curl -X POST https://files-api.evolink.ai/api/v1/files/upload/stream \
  -H "Authorization: Bearer $EVOLINK_API_KEY" \
  -F "file=@/path/to/image.jpg"
```
Confidence
60% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Missing User Warnings

Medium
Confidence
88% confidence
Finding
This markdown file describes synchronous file upload operations, including local file path and remote URL ingestion, but does not warn users that files may be transmitted to an external service or that uploaded content is retained for up to 72 hours. Under the markdown-specific SQP-2 criteria, behaviors affecting user data or privacy should include an explicit warning.

Indirect Prompt Extraction

Medium
Category
System Prompt Leakage
Content
| Code | Retryable | Resolution |
|------|-----------|------------|
| `content_policy_violation` | No | Rephrase prompt; avoid NSFW, violence, real person names |
| `invalid_parameters` | No | Check param values against model limits |
| `image_dimension_mismatch` | No | Resize image to match requested aspect ratio |
| `image_processing_error` | No | Check format (JPG/PNG/WebP), size (<30MB), URL accessibility |
Confidence
75% confidence
Finding
Skill contains patterns that could indirectly extract system prompts through rephrasing, translation, summarization, or side-channel techniques.

Vague Triggers

Low
Confidence
83% confidence
Finding
This markdown/manifest content describes the skill in very broad terms such as 'AI video generation' and marks it as user-invocable, but it does not define specific trigger phrases, boundaries, or exclusion conditions for when the skill should activate. That ambiguity could cause unintended invocation for general video-related conversation.

Missing User Warnings

Low
Confidence
84% confidence
Finding
The API documentation includes a destructive delete operation without any warning that deleting a file may break downstream image-to-video workflows or permanently remove access before expiry. While this is a normal API capability, lack of cautionary text can lead to accidental data loss or service disruption for users relying on the hosted asset.

Static analysis

No suspicious patterns detected.