Back to skill

Security audit

Media.io AI Image & Video Generation API

Security checks for vulnerabilities and agentic risk

Overview

This skill is a straightforward Media.io image and video generation connector that sends user-provided prompts and media URLs to Media.io using a Media.io API key.

Install only if you are comfortable sending generation prompts and media URLs to Media.io under your Media.io API key. Use a dedicated least-privilege or test key, avoid sensitive/private media unless Media.io's terms fit your needs, and prefer installing dependencies in an isolated environment with pinned versions.

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:69
Finding

Unpinned Third-Party Dependency Installation

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 69–73
Vulnerability Type: Unpinned dependency / software supply-chain risk
Risk Level: Medium

Vulnerable Code Snippet:

markdown
### 1) Install Dependency
```bash
pip install requests
text

### Technical Analysis

The installation instructions retrieve the latest version of the third-party `requests` package and its transitive dependencies without enforcing exact versions, cryptographic hashes, or a dependency lockfile. Consequently, the code installed by this command can change over time despite the audited project remaining unchanged.

Although `requests` is a legitimate package, this installation practice does not guarantee that users receive the same audited dependency set. Exploitation would require compromise of the package distribution channel, a malicious or compromised future dependency release, or manipulation of the package index used in the executing environment.

### Attack Path

1. An attacker compromises a dependency release, its maintainer account, the configured package index, or another part of the dependency-resolution channel.
2. The attacker publishes or serves a malicious package version that satisfies the unconstrained installation request.
3. A user follows the documented `pip install requests` instruction.
4. `pip` resolves and installs the attacker-controlled package or transitive dependency.
5. Malicious installation or runtime code executes with the privileges of the user or automation process running `pip` or importing the dependency.

### Impact Assessment

Successful exploitation could allow arbitrary code execution with the privileges of the installation or runtime process. Depending on the environment, this may expose the Media.io `API_KEY`, local files accessible to the process, generated media data, and other environment variables. It could also enable unauthorized network requests or modification of files 
...[truncated 329 chars]
Remediation
View remediation

Remediation Suggestions

  1. Declare dependencies in a dedicated requirements or lock file and pin exact, reviewed versions, including transitive dependencies.

  2. Record cryptographic hashes and require their verification during installation. For example:

    bash
    pip install --require-hashes -r requirements.txt
    
  3. Generate the lock file through a controlled dependency-management process, such as pip-tools, and review dependency updates before merging them.

  4. Configure installations to use a trusted package index explicitly and prevent fallback to untrusted indexes.

  5. Run dependency installation and the Skill under a non-privileged account in an isolated virtual environment or container.

  6. Add automated dependency and vulnerability scanning while retaining manual approval for version updates.

Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • 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
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (31)

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
88% confidence
Finding

The skill documents capabilities that require environment access, file reads, and outbound network access, but it does not declare any explicit tool scope such as permissions or allowed-tools. This creates a trust and containment gap: a host may expose broader capabilities than reviewers or users expect, increasing the chance of unintended secret access or external data exfiltration if the skill implementation or future changes are unsafe.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The reference describes sending prompts and media URLs to external Media.io endpoints but does not include any privacy or data-sharing notice. Users may unknowingly submit sensitive prompts or private media references to a third-party processor, creating confidentiality and compliance risk.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The document instructs readers to load an API key from environment variables and make authenticated external requests without any guidance on credential handling, secret exposure, or third-party transmission. This increases the chance of unsafe operational use, including accidental key leakage in logs, examples, or shared environments.

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 · references/mediaio-aigc-api-reference.md (reported line 88)May include surrounding context.

md
{
      "title": "Query User Credits",
      "language": "cURL",
      "code_example": "curl --request POST \n  --url https://openapi.media.io/user/credits \n  --header 'Content-Type: application/json' \n  --header 'X-API-KEY: <api-key>' \n  --data '{}'"
    }
  ]
}

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/mediaio-aigc-api-reference.md (reported line 152)May include surrounding context.

md
{
      "title": "Query Task Result",
      "language": "cURL",
      "code_example": "curl --request POST \n  --url https://openapi.media.io/generation/result/<task_id> \n  --header 'Content-Type: application/json' \n  --header 'X-API-KEY: <api-key>' \n  --data '{}'"
    }
  ]
}

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/mediaio-aigc-api-reference.md (reported line 232)May include surrounding context.

md
{
      "title": "create image by text or image",
      "language": "cURL",
      "code_example": "curl --request POST \\\n  --url https://openapi.media.io/generation/imagen/t2i-imagen-4 \\\n  --header 'Content-Type: application/json' \\\n  --header 'X-API-KEY: <api-key>' \\\n  --data '\n{\n  \"data\": {\n    \"counts\": \"1\",\n    \"prompt\": \"<string>\",\n    \"ratio\": \"9:16\"\n  }\n}'\n"
    }
  ],
  "describe": "",

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/mediaio-aigc-api-reference.md (reported line 317)May include surrounding context.

md
{
      "title": "create image by text or image",
      "language": "cURL",
      "code_example": "curl --request POST \\\n  --url https://openapi.media.io/generation/soul/t2i-soul-character \\\n  --header 'Content-Type: application/json' \\\n  --header 'X-API-KEY: <api-key>' \\\n  --data '\n{\n  \"data\": {\n    \"prompt\": \"<string>\",\n    \"ratio\": \"16:9\"\n  }\n}'\n"
    }
  ],
  "describe": "",

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/mediaio-aigc-api-reference.md (reported line 404)May include surrounding context.

md
{
      "title": "create image by text or image",
      "language": "cURL",
      "code_example": "curl --request POST \\\n  --url https://openapi.media.io/generation/banana/i2i-banana \\\n  --header 'Content-Type: application/json' \\\n  --header 'X-API-KEY: <api-key>' \\\n  --data '\n{\n  \"data\": {\n    \"images\": [\n      \"<string>\"\n    ],\n    \"prompt\": \"<string>\",\n    \"ratio\": \"16:9\"\n  }\n}'\n"
    }
  ],
  "describe": "",

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/mediaio-aigc-api-reference.md (reported line 490)May include surrounding context.

md
{
      "title": "create image by text or image",
      "language": "cURL",
      "code_example": "curl --request POST \\\n  --url https://openapi.media.io/generation/seedream/i2i-seedream-v4-0 \\\n  --header 'Content-Type: application/json' \\\n  --header 'X-API-KEY: <api-key>' \\\n  --data '\n{\n  \"data\": {\n    \"images\": [\n      \"<string>\"\n    ],\n    \"prompt\": \"<string>\",\n    \"ratio\": \"9:16\"\n  }\n}'\n"
    }
  ],
  "describe": "",

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/mediaio-aigc-api-reference.md (reported line 577)May include surrounding context.

md
{
      "title": "create image by text or image",
      "language": "cURL",
      "code_example": "curl --request POST \\\n  --url https://openapi.media.io/generation/banana/i2i-banana-2 \\\n  --header 'Content-Type: application/json' \\\n  --header 'X-API-KEY: <api-key>' \\\n  --data '\n{\n  \"data\": {\n    \"images\": [\n      \"<string>\"\n    ],\n    \"prompt\": \"<string>\",\n    \"ratio\": \"16:9\",\n    \"resolution\": \"1K\"\n  }\n}'\n"
    }
  ],
  "describe": "",

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/mediaio-aigc-api-reference.md (reported line 669)May include surrounding context.

md
{
      "title": "create video by text or image",
      "language": "cURL",
      "code_example": "curl --request POST \\\n  --url https://openapi.media.io/generation/wan/i2v-wan-v2-6 \\\n  --header 'Content-Type: application/json' \\\n  --header 'X-API-KEY: <api-key>' \\\n  --data '\n{\n  \"data\": {\n    \"duration\": \"5s\",\n    \"generate_audio\": \"True\",\n    \"image\": \"<string>\",\n    \"prompt\": \"<string>\",\n    \"resolution\": \"720P\",\n    \"shot_type\": \"Multi\"\n  }\n}'\n"
    }
  ],
  "describe": "",

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/mediaio-aigc-api-reference.md (reported line 759)May include surrounding context.

md
{
      "title": "create video by text or image",
      "language": "cURL",
      "code_example": "curl --request POST \\\n  --url https://openapi.media.io/generation/wan/i2v-wan-v2-2 \\\n  --header 'Content-Type: application/json' \\\n  --header 'X-API-KEY: <api-key>' \\\n  --data '\n{\n  \"data\": {\n    \"duration\": \"5s\",\n    \"image\": \"<string>\",\n    \"prompt\": \"<string>\",\n    \"resolution\": \"1080P\"\n  }\n}'\n"
    }
  ],
  "describe": "",

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/mediaio-aigc-api-reference.md (reported line 847)May include surrounding context.

md
{
      "title": "create video by text or image",
      "language": "cURL",
      "code_example": "curl --request POST \\\n  --url https://openapi.media.io/generation/minimax/i2v-minimax-02 \\\n  --header 'Content-Type: application/json' \\\n  --header 'X-API-KEY: <api-key>' \\\n  --data '\n{\n  \"data\": {\n    \"duration\": \"6s\",\n    \"image\": \"<string>\",\n    \"prompt\": \"<string>\",\n    \"resolution\": \"768P\"\n  }\n}'\n"
    }
  ],
  "describe": "",

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/mediaio-aigc-api-reference.md (reported line 935)May include surrounding context.

md
{
      "title": "create video by text or image",
      "language": "cURL",
      "code_example": "curl --request POST \\\n  --url https://openapi.media.io/generation/kling/i2v-kling-v2-1 \\\n  --header 'Content-Type: application/json' \\\n  --header 'X-API-KEY: <api-key>' \\\n  --data '\n{\n  \"data\": {\n    \"duration\": \"5s\",\n    \"image\": \"<string>\",\n    \"prompt\": \"<string>\",\n    \"resolution\": \"720P\"\n  }\n}'\n"
    }
  ],
  "describe": "",

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/mediaio-aigc-api-reference.md (reported line 1024)May include surrounding context.

md
{
      "title": "create video by text or image",
      "language": "cURL",
      "code_example": "curl --request POST \\\n  --url https://openapi.media.io/generation/vidu/i2v-vidu-q3 \\\n  --header 'Content-Type: application/json' \\\n  --header 'X-API-KEY: <api-key>' \\\n  --data '\n{\n  \"data\": {\n    \"duration\": \"4s\",\n    \"generate_audio\": \"True\",\n    \"image\": \"<string>\",\n    \"prompt\": \"<string>\",\n    \"resolution\": \"720P\"\n  }\n}'\n"
    }
  ],
  "describe": "",

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/mediaio-aigc-api-reference.md (reported line 1113)May include surrounding context.

md
{
      "title": "create video by text or image",
      "language": "cURL",
      "code_example": "curl --request POST \\\n  --url https://openapi.media.io/generation/kling/i2v-kling-v2-5-turbo \\\n  --header 'Content-Type: application/json' \\\n  --header 'X-API-KEY: <api-key>' \\\n  --data '\n{\n  \"data\": {\n    \"duration\": \"5s\",\n    \"image\": \"<string>\",\n    \"prompt\": \"<string>\",\n    \"resolution\": \"1080P\"\n  }\n}'\n"
    }
  ],
  "describe": "",

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/mediaio-aigc-api-reference.md (reported line 1203)May include surrounding context.

md
{
      "title": "create video by text or image",
      "language": "cURL",
      "code_example": "curl --request POST \\\n  --url https://openapi.media.io/generation/veo/i2v-veo-v3-1 \\\n  --header 'Content-Type: application/json' \\\n  --header 'X-API-KEY: <api-key>' \\\n  --data '\n{\n  \"data\": {\n    \"aspect_ratio\": \"9:16\",\n    \"duration\": \"4s\",\n    \"generate_audio\": \"True\",\n    \"image\": \"<string>\",\n    \"prompt\": \"<string>\",\n    \"resolution\": \"720P\"\n  }\n}'\n"
    }
  ],
  "describe": "",

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/mediaio-aigc-api-reference.md (reported line 1295)May include surrounding context.

md
{
      "title": "create video by text or image",
      "language": "cURL",
      "code_example": "curl --request POST \\\n  --url https://openapi.media.io/generation/kling/i2v-kling-v3-0 \\\n  --header 'Content-Type: application/json' \\\n  --header 'X-API-KEY: <api-key>' \\\n  --data '\n{\n  \"data\": {\n    \"duration\": \"5s\",\n    \"generate_audio\": \"True\",\n    \"image\": \"<string>\",\n    \"multi_shots\": \"True\",\n    \"prompt\": \"<string>\",\n    \"resolution\": \"1080P\"\n  }\n}'\n"
    }
  ],
  "describe": "",

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/mediaio-aigc-api-reference.md (reported line 1385)May include surrounding context.

md
{
      "title": "create video by text or image",
      "language": "cURL",
      "code_example": "curl --request POST \\\n  --url https://openapi.media.io/generation/minimax/i2v-minimax-v2-3 \\\n  --header 'Content-Type: application/json' \\\n  --header 'X-API-KEY: <api-key>' \\\n  --data '\n{\n  \"data\": {\n    \"duration\": \"6s\",\n    \"image\": \"<string>\",\n    \"prompt\": \"<string>\",\n    \"resolution\": \"768P\"\n  }\n}'\n"
    }
  ],
  "describe": "",

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/mediaio-aigc-api-reference.md (reported line 1473)May include surrounding context.

md
{
      "title": "create video by text or image",
      "language": "cURL",
      "code_example": "curl --request POST \\\n  --url https://openapi.media.io/generation/vidu/i2v-vidu-q2 \\\n  --header 'Content-Type: application/json' \\\n  --header 'X-API-KEY: <api-key>' \\\n  --data '\n{\n  \"data\": {\n    \"duration\": \"4s\",\n    \"image\": \"<string>\",\n    \"prompt\": \"<string>\",\n    \"resolution\": \"720P\"\n  }\n}'\n"
    }
  ],
  "describe": "",

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/mediaio-aigc-api-reference.md (reported line 1561)May include surrounding context.

md
{
      "title": "create video by text or image",
      "language": "cURL",
      "code_example": "curl --request POST \\\n  --url https://openapi.media.io/generation/wan/i2v-wan-v2-5 \\\n  --header 'Content-Type: application/json' \\\n  --header 'X-API-KEY: <api-key>' \\\n  --data '\n{\n  \"data\": {\n    \"duration\": \"5s\",\n    \"image\": \"<string>\",\n    \"prompt\": \"<string>\",\n    \"resolution\": \"480P\"\n  }\n}'\n"
    }
  ],
  "describe": "",

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/mediaio-aigc-api-reference.md (reported line 1649)May include surrounding context.

md
{
      "title": "create video by text or image",
      "language": "cURL",
      "code_example": "curl --request POST \\\n  --url https://openapi.media.io/generation/kling/i2v-kling-v2-6 \\\n  --header 'Content-Type: application/json' \\\n  --header 'X-API-KEY: <api-key>' \\\n  --data '\n{\n  \"data\": {\n    \"duration\": \"5s\",\n    \"generate_audio\": \"True\",\n    \"image\": \"<string>\",\n    \"prompt\": \"<string>\"\n  }\n}'\n"
    }
  ],
  "describe": "",

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The documented 'Motion Control Kling 2.6' API accepts an input video, which expands the skill beyond the stated text/image generation scope in the manifest. This mismatch can mislead users and reviewers about what data types may be uploaded to the third party, increasing privacy, consent, and policy-compliance risk.

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 · references/mediaio-aigc-api-reference.md (reported line 1736)May include surrounding context.

md
{
      "title": "create video by text or image",
      "language": "cURL",
      "code_example": "curl --request POST \\\n  --url https://openapi.media.io/generation/kling/i2v-motion-control-kling-v2-6 \\\n  --header 'Content-Type: application/json' \\\n  --header 'X-API-KEY: <api-key>' \\\n  --data '\n{\n  \"data\": {\n    \"image\": \"<string>\",\n    \"prompt\": \"<string>\",\n    \"video\": \"<string>\"\n  }\n}'\n"
    }
  ],
  "describe": "",

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/mediaio-aigc-api-reference.md (reported line 1825)May include surrounding context.

md
{
      "title": "create video by text or image",
      "language": "cURL",
      "code_example": "curl --request POST \\\n  --url https://openapi.media.io/generation/veo/i2v-veo-v3-1-fast \\\n  --header 'Content-Type: application/json' \\\n  --header 'X-API-KEY: <api-key>' \\\n  --data '\n{\n  \"data\": {\n    \"aspect_ratio\": \"9:16\",\n    \"duration\": \"4s\",\n    \"generate_audio\": \"True\",\n    \"image\": \"<string>\",\n    \"prompt\": \"<string>\",\n    \"resolution\": \"720P\"\n  }\n}'\n"
    }
  ],
  "describe": "",

Static analysis

No suspicious patterns detected.