Back to skill

Security audit

Nano Banana 2 — AI Image Generation (Gemini 3.1 Flash Image, Google, Evolink)

Security checks for vulnerabilities and agentic risk

Overview

The skill is coherent for image generation, but its setup tells users to run a mutable npm MCP server with an API key, which should be reviewed before install.

Review the MCP setup before installing. Prefer a pinned, reviewed version of `@evolinkai/evolink-media`, avoid automatic `npx -y @latest` execution where possible, and use a revocable Evolink API key with limited exposure. Do not upload private or sensitive images unless you intend to send them to Evolink and receive public temporary links.

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:54
Finding
Execution of an Unpinned npm Dependency## Vulnerability Details **File Location**: `SKILL.md`, lines 54–58 **Vulnerability Type**: Unpinned third-party package execution **Risk Level**: Medium **Vulnerable Code Snippet**: ```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/image-api-params.md` for full config JSON. ``` ### Technical Analysis The documented setup commands download and execute `@evolinkai/evolink-media@latest`. The `latest` npm tag is mutable and does not identify the specific package version that was reviewed. Consequently, the code executed during installation can differ from the code originally assessed. The `npx -y` options automatically approve package installation, reducing the opportunity for the user to inspect the resolved package and version before execution. npm packages can run executable entry points and installation lifecycle scripts with the privileges of the invoking user. This is a supply-chain weakness rather than evidence that the currently published package is malicious. Exploitation would require compromise of the package, its publisher account, the npm distribution path, or a future release assigned to the `latest` tag. ### Attack Path 1. An attacker compromises the npm package, its publisher credentials, or its release process. 2. The attacker publishes a malicious version and assigns it to the mutable `latest` tag. 3. A user follows one of the documented setup commands. 4. `npx -y` resolves, downloads, and executes the attacker-controlled release without interactive confirmation. 5. The malicious package executes in the user's environment and may access resources available to that proces ...[truncated 759 chars]
Remediation
## Remediation Suggestions 1. Replace `@latest` with an exact, reviewed version, for example: ```bash npx @evolinkai/evolink-media@1.2.3 ``` 2. Remove `-y` so users can review the package and resolved version before installation. 3. Where supported, pin and verify the package tarball integrity using a trusted checksum or npm lockfile. 4. Document a controlled upgrade procedure that requires reviewing release notes, package provenance, dependency changes, and integrity metadata before changing the pinned version. 5. Prefer installing from a lockfile-backed project rather than resolving the package dynamically each time the MCP server starts. 6. Run the MCP server with least privilege in an isolated environment, granting access only to the required API key and necessary files. 7. Use a narrowly scoped and revocable API key, and rotate it immediately if dependency compromise is suspected.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • System Prompt LeakageDirect Leakage, Indirect Extraction, Tool-Based Exfiltration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (10)

External Transmission

Medium
Category
Data Exfiltration
Content
| Service | URL |
|---------|-----|
| Generation API | `https://api.evolink.ai/v1/images/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/images/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 a specific version, which allows whatever package version is current at install time to run with the user's environment variables, including `EVOLINK_API_KEY`. This creates a supply-chain risk: a malicious or compromised package update could execute arbitrary code, exfiltrate secrets, or alter tool behavior transparently.

Rp1

Medium
Category
MCP Rug Pull
Confidence
96% confidence
Finding
This command again references the MCP server through unpinned `npx`, meaning the installed code is not fixed and may change over time. Because the command explicitly passes `EVOLINK_API_KEY` into the launched process, a compromised upstream release could immediately access and leak the credential or misuse it for unauthorized API activity.

Rp1

Medium
Category
MCP Rug Pull
Confidence
96% confidence
Finding
The Desktop/Cursor setup also uses `npx -y @evolinkai/evolink-media@latest`, which is effectively an instruction to fetch and execute mutable remote code in a privileged integration context. Since MCP servers can access user data and injected secrets, an attacker controlling the package or its dependencies could pivot into credential theft, local data access, or malicious tool responses.

Missing User Warnings

Medium
Confidence
96% confidence
Finding
The document explicitly instructs users to upload images to a file hosting service and states that it returns publicly accessible URLs, but it does not warn that uploaded content will be exposed to anyone with the link. In a skill handling user-supplied images, this can lead to accidental disclosure of sensitive or private images because users or integrators may assume storage is private by default.

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
89% confidence
Finding
This markdown file describes file upload endpoints and bearer-authenticated API usage, including local file path and remote URL submission, but does not warn that files and referenced content will be transmitted to an external service. Under the markdown criteria for SQP-2, descriptions that could affect user data or privacy should disclose that behavior.

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 (<10MB), URL accessibility |
Confidence
75% confidence
Finding
Skill contains patterns that could indirectly extract system prompts through rephrasing, translation, summarization, or side-channel techniques.

Missing User Warnings

Low
Confidence
87% confidence
Finding
The delete endpoint is presented without noting that it is a destructive operation and may permanently remove hosted content. This can cause accidental data loss or broken downstream workflows if users or agents invoke deletion without understanding the consequence.

Static analysis

No suspicious patterns detected.