Back to skill

Security audit

mmMusicMaker

Security checks for vulnerabilities and agentic risk

Overview

This skill is a straightforward MiniMax music-generation helper that sends prompts and lyrics to MiniMax and saves the returned audio, with one optional download path users should treat carefully.

Install only if you are comfortable sending lyrics, prompts, style references, and your MiniMax API key authentication request to MiniMax. Prefer the default hex output path when possible, avoid submitting confidential unreleased material unless your MiniMax terms permit it, and be cautious with --output-format url --download because the downloaded URL is not validated or size-limited.

Vulnerability Patterns
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/utils_audio.py:17
Finding

Unvalidated API-Provided URL Enables SSRF and Unbounded File Download

Content
View full analysis
str: resp = requests.get(url, timeout=60) resp.raise_for_status() return save_bytes(resp.content, output_path) ``` ### Technical Analysis When URL output and automatic downloading are enabled, the application passes the `data.audio` value returned by the MiniMax API directly to `requests.get()` without validating the URL's scheme, host, port, resolved IP address, or redirect chain. Requests follows HTTP redirects by default. Consequently, even an initially acceptable URL could redirect to a loopback, private, link-local, reserved, or cloud metadata address. Exploitation would require an attacker to influence the API response, compromise the remote API, or otherwise compromise the trusted HTTPS response path. The response body is also accessed through `resp.content`, which buffers the entire body in memory before writing it to disk. There is no maximum response-size check, content-type validation, or streamed byte limit. A malicious or compromised endpoint could therefore return an excessively large body and cause memory or disk exhaustion. ### Attack Path 1. A user invokes the script with `--output-format url --download`. 2. The script sends the generation r ...[truncated 1589 chars]
Remediation
View remediation
MAX_AUDIO_BYTES: raise ValueError("Audio download exceeds size limit") output.write(chunk) ``` URL validation must occur immediately before each connection, including after every permitted redirect, to reduce redirect-based and DNS-resolution bypasses. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Taint TrackingDirect Taint Flow, Variable-Mediated Taint Flow, Credential Exfiltration Chain
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (10)

Tainted flow: 'headers' from os.getenv (line 107, credential/environment) → requests.post (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/generate_music.py (reported line 112)May include surrounding context.

python
"Content-Type": "application/json",
    }

    resp = requests.post(API_URL, json=payload, headers=headers, timeout=120)
    resp.raise_for_status()
    data = resp.json()

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

The skill is presented as a MiniMax music-generation helper, but the documented behavior includes downloading from URLs, writing arbitrary files, and generic binary/audio handling. That mismatch is dangerous because users or agent frameworks may trust the skill for a narrow purpose while it actually exercises broader I/O and network capabilities that could be abused for unexpected downloads, unsafe file writes, or handling untrusted content.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
90% confidence
Finding

The skill documentation describes capabilities that require environment access, network access, and writing output files, but it does not declare an explicit permission or allowed-tools scope. In an agent setting, this creates unnecessary ambiguity around what the skill is allowed to do and weakens least-privilege controls, increasing the risk of overbroad execution if the surrounding platform infers or grants capabilities implicitly.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · SKILL.md (reported line 346)May include surrounding context.

md
from utils_audio import hex_to_bytes, save_bytes, download_url

API_URL = "https://api.minimaxi.com/v1/music_generation"


def build_prompt_from_fields(args):

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · references/minimax_music_api.md (reported line 7)May include surrounding context.

md
from utils_audio import hex_to_bytes, save_bytes, download_url

API_URL = "https://api.minimaxi.com/v1/music_generation"


def build_prompt_from_fields(args):

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · scripts/generate_music.py (reported line 8)May include surrounding context.

python
from utils_audio import hex_to_bytes, save_bytes, download_url

API_URL = "https://api.minimaxi.com/v1/music_generation"


def build_prompt_from_fields(args):

External Transmission

Medium
Category
Data Exfiltration
Confidence
80% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · scripts/generate_music.py (reported line 112)May include surrounding context.

python
"Content-Type": "application/json",
    }

    resp = requests.post(API_URL, json=payload, headers=headers, timeout=120)
    resp.raise_for_status()
    data = resp.json()

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The script transmits user-supplied lyrics, prompts, and style references to a third-party service without any explicit notice, consent flow, or sensitivity check. In this skill context, users may paste unreleased lyrics, proprietary creative material, or personal data into prompts, creating a real privacy and data-governance risk even though the transmission is expected functionality.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The function writes arbitrary bytes to the filesystem and creates parent directories, but there is no confirmation prompt, logging, print statement, or explanatory comment warning the user about this side effect. For a code file, filesystem modification is a safety-relevant operation that should have some visible disclosure unless clearly covered elsewhere.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

This function performs an HTTP GET request and saves the response content to disk, but provides no user-facing warning, logging, or comment disclosing the network access and file write behavior. Network transmission and persistent file creation are safety-relevant actions for code files when they occur silently.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.