Back to skill

Security audit

Midjourney Image

Security checks for vulnerabilities and agentic risk

Overview

This skill is a straightforward Midjourney/AceDataCloud image-generation guide, with expected external API use and an optional unpinned MCP package install that users should handle carefully.

Before installing or using this skill, assume prompts, image URLs, and related media references may be sent to AceDataCloud/Midjourney. Do not submit secrets, regulated data, private images, or internal-only URLs unless your policy allows it. If using the optional MCP package, install it in a virtual environment and consider pinning/auditing the package version.

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:160
Finding
Unpinned Third-Party Python Package Installation## Vulnerability Details **File Location**: `SKILL.md`, line 160 **Vulnerability Type**: Unpinned third-party dependency **Risk Level**: Medium ### Vulnerable Code ```bash pip install mcp-midjourney ``` ### Technical Analysis The documentation directs users to install `mcp-midjourney` from pip's configured package index without specifying a reviewed version, cryptographic hashes, a lockfile, or a verified source. Consequently, installation behavior and installed code can change after the Skill has been audited. This supply-chain weakness could become exploitable if the package, its publisher account, the configured package index, or a transitive dependency is compromised. A malicious package release may execute code during installation through build hooks or later when the package is imported or run. The available evidence does not establish that the named package is currently malicious; the finding concerns the unsafe, non-reproducible installation instruction. ### Attack Path 1. An attacker compromises the package publisher, a transitive dependency, or a package index trusted by the user's pip configuration. 2. The attacker publishes a malicious release under the expected package name or dependency chain. 3. A user follows the documented `pip install mcp-midjourney` instruction. 4. Pip resolves the uncontrolled release and downloads it without validating a project-provided version or hash. 5. Attacker-controlled code executes during package building or installation, or when the installed MCP server is subsequently started. 6. The code operates with the privileges and environmental access of the installing or executing user. ### Impact Assessment Successful exploitation could provide arbitrary code execution under the user account that installs or runs the package. The resulting access may include project files, user-accessible files, environment variables such as `ACEDATACLOUD_API_TOKEN`, and network resources available to that account. If installati ...[truncated 205 chars]
Remediation
## Remediation Suggestions - Pin the dependency to a specifically reviewed version rather than installing the latest available release. - Record and validate cryptographic hashes using a locked requirements file and `pip install --require-hashes -r requirements.txt`. - Pin and audit all transitive dependencies, not only the top-level package. - Document the verified publisher and canonical source repository. - Install the package in an isolated virtual environment under a non-privileged account. - Avoid `sudo pip install` and prevent the runtime from accessing secrets or files it does not require. - Use a trusted internal package mirror or allowlist where practical. - Add automated dependency scanning and periodically review pinned upgrades before adoption. A hardened example is: ```bash python -m venv .venv . .venv/bin/activate pip install --require-hashes -r requirements.txt ``` The corresponding `requirements.txt` should contain an exact reviewed version and hashes for every resolved artifact.
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 (6)

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The skill sends user prompts and image URLs/content to AceDataCloud's third-party API, but the documentation does not clearly disclose that user-provided data leaves the local environment. This can cause users to unintentionally transmit sensitive prompts, proprietary images, or internal URLs to an external service, creating privacy and compliance risk.

External Transmission

Medium
Category
Data Exfiltration
Content
## Quick Start — Generate an Image

```bash
curl -X POST https://api.acedata.cloud/midjourney/imagine \
  -H "Authorization: Bearer $ACEDATACLOUD_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"prompt": "a futuristic city at sunset, cyberpunk style --ar 16:9", "wait": true}'
Confidence
96% confidence
Finding
The hardcoded external service endpoint confirms that user data and authentication tokens are used with an internet-accessible third-party API. In the context of an image-generation skill this is expected, but it still expands the trust boundary and can expose user content to external processing, logging, or retention outside the user's direct control.

External Transmission

Medium
Category
Data Exfiltration
Content
## Quick Start — Generate an Image

```bash
curl -X POST https://api.acedata.cloud/midjourney/imagine \
  -H "Authorization: Bearer $ACEDATACLOUD_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"prompt": "a futuristic city at sunset, cyberpunk style --ar 16:9", "wait": true}'
Confidence
96% confidence
Finding
The hardcoded external service endpoint confirms that user data and authentication tokens are used with an internet-accessible third-party API. In the context of an image-generation skill this is expected, but it still expands the trust boundary and can expose user content to external processing, logging, or retention outside the user's direct control.

Indirect Prompt Extraction

Medium
Category
System Prompt Leakage
Content
}
```

### 5. Describe an Image (Reverse Prompt)

Get AI-generated text descriptions of an image (returns 4 options).
Confidence
85% confidence
Finding
Skill contains patterns that could indirectly extract system prompts through rephrasing, translation, summarization, or side-channel techniques.

Natural-Language Policy Violations

Low
Confidence
88% confidence
Finding
The documentation presents `translation: true` as a feature without framing automatic language conversion as an informed, opt-in choice. Auto-translation can alter user intent, route content through additional processing, and create privacy surprises for multilingual or sensitive prompts.

Rp1

Low
Category
MCP Rug Pull
Confidence
60% confidence
Finding
pip install without ==version installs the latest release, which could include malicious changes.

Static analysis

No suspicious patterns detected.