Back to skill

Security audit

MyReels API

Security checks for vulnerabilities and agentic risk

Overview

The skill mostly matches its MyReels API purpose, but it needs review because its shell helpers can execute config files and may send access tokens to a configurable endpoint.

Install only after reviewing the shell scripts. Prefer a pinned commit and project-local install, keep the access token limited, avoid sensitive prompts or regulated data, do not set MYREELS_BASE_URL to anything except the official HTTPS MyReels API unless using a separate test token, and treat ~/.myreels/config as trusted shell code until the skill switches to safe config parsing.

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

T09 · Insecure Skill Coding Practices

Error
Location
scripts/_common.sh:57
Finding

Bearer Token Disclosure Through an Unrestricted API Base URL

Content
View full analysis
"$err_file") || curl_status=$? ``` ### Technical Analysis Authenticated requests add `MYREELS_ACCESS_TOKEN` to the `Authorization` header without first verifying that the resolved destination is the official MyReels HTTPS origin. `MYREELS_BASE_URL` may be supplied through the environment or sourced configuration, and no scheme or hostname allowlist is enforced. Consequently, the token can be transmitted to an attacker-controlled host or over plaintext HTTP. Generation request bodies may also contain private prompts, source-media URLs, or other user-provided generation parameters and would be disclosed to the same destination. Allowing a configurable endpoint can be useful for development, but forwarding production credentials to an unrestricted destination exceeds the minimum privileges necessary for the declared functionality. ### Attack Path 1. An attacker influences the process environment or the MyReels configuration file. 2. The attacker sets `MYREELS_BASE_URL` to a host under their control, such as `http://attacker.example`. 3. The user or agent invokes `myreels-generate.sh`, `myreels-task-get.sh`, ...[truncated 710 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/myreels-models.sh:65
Finding

Access Token Sent to an Endpoint Documented as Public

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/_common.sh:4
Finding

Environment-Selected Configuration File Is Executed as Shell Code

Content
View full analysis
Remediation
View remediation

T08 · Insecure Dependencies

Warning
Location
SKILL.md:211
Finding

Installation Instructions Use Mutable and Unpinned Supply-Chain Sources

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • 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
  • Rogue AgentSelf-Modification, Session Persistence
Findings (33)

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

This is a meaningful description-to-behavior mismatch. The declared purpose frames the skill as an operational MyReels API integration for generation, model inspection, task listing, and polling. The actual code chunk is instead a 'doctor' utility whose main function is environment validation: locating config, checking environment variables, confirming curl/jq installation, and probing /api/v1/models/api for reachability and expected JSON structure. While the network probe touches a declared resource related to model inspection, it is only a limited connectivity/sanity test, not the broader interactive functionality described. The code does not perform the core declared actions such as generating images/videos/speech/music, submitting tasks, listing authenticated user tasks, or polling status. Therefore the supplied code chunk's primary purpose is materially different from the declared description.

Content

No source excerpt is available for this finding.

Direct Prompt Extraction

High
Category
System Prompt Leakage
Confidence
85% confidence
Finding

Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.

Content

Scanner excerpt · references/models.md (reported line 14)May include surrounding context.

md
If your runtime can access this endpoint, prefer the live response over any static model list.

### Cost Display Rule

Use `estimatedCost` as the final user-facing cost field.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
89% confidence
Finding

The skill documents shell and network-capable behavior but does not declare any explicit tool scope such as allowed-tools or permissions. That weakens policy enforcement and increases the chance the agent can invoke broader capabilities than intended when handling external API calls and local shell scripts.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The invocation text says to use this skill when the user wants to generate images, videos, speech, or music, and whenever the user mentions MyReels generation, model selection, task history, task polling, result URLs, or MyReels API integration. This is broad and lacks explicit exclusion conditions or narrower trigger boundaries, which could cause unintended activation for general conversation about media generation or APIs.

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
Confidence
60% confidence
Finding

Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Content

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

md
## Prerequisites

- An active MyReels subscription is required for generation and task query endpoints.
- Create an AccessToken in [myreels.ai/developer](https://myreels.ai/developer).
- `GET https://api.myreels.ai/api/v1/models/api` was verified on March 18, 2026 and currently does not require `Authorization`.

Config file `~/.myreels/config`:

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
85% confidence
Finding

Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

Content

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

md
- `userInputSchema.<param>.default`
- `userInputSchema.<param>.options`

For natural-language requests such as "stronger motion" or "disable prompt extension", map user intent from `label` and `description`, not from field names alone.

### 2. List existing tasks when needed

Rp1

Medium
Category
MCP Rug Pull
Confidence
81% confidence
Finding

The install instruction uses an unpinned npx skills invocation, which can fetch whatever version is current at execution time. This creates supply-chain risk because behavior may change unexpectedly or a compromised upstream package version could be executed.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding

npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The examples instruct users to send prompts, bearer tokens, task IDs, and retrieve account-linked task results from an external service, but they do not include an explicit privacy/security warning about what data leaves the local environment. In a skill context, this omission can cause users or downstream agents to transmit sensitive prompts or account metadata without informed consent.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
70% 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/code-examples.md (reported line 125)May include surrounding context.

md
TOKEN = "YOUR_ACCESS_TOKEN"
MODEL = "nano-banana2"

resp = requests.post(
    f"https://api.myreels.ai/generation/{MODEL}",
    headers={"Authorization": f"Bearer {TOKEN}"},
    json={"prompt": "A cinematic portrait"},

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/code-examples.md (reported line 153)May include surrounding context.

time.sleep(10)

text

#### cURL

```bash
curl -X POST "https://api.myreels.ai/generation/nano-banana2" \

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% 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 38)May include surrounding context.

md
The single source of truth for available models, parameter definitions, defaults, options, and field descriptions is:

`GET https://api.myreels.ai/api/v1/models/api`

Verified on March 18, 2026:

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% 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/code-examples.md (reported line 13)May include surrounding context.

md
The single source of truth for available models, parameter definitions, defaults, options, and field descriptions is:

`GET https://api.myreels.ai/api/v1/models/api`

Verified on March 18, 2026:

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% 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/code-examples.md (reported line 18)May include surrounding context.

md
The single source of truth for available models, parameter definitions, defaults, options, and field descriptions is:

`GET https://api.myreels.ai/api/v1/models/api`

Verified on March 18, 2026:

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% 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/code-examples.md (reported line 48)May include surrounding context.

md
The single source of truth for available models, parameter definitions, defaults, options, and field descriptions is:

`GET https://api.myreels.ai/api/v1/models/api`

Verified on March 18, 2026:

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% 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/code-examples.md (reported line 73)May include surrounding context.

md
The single source of truth for available models, parameter definitions, defaults, options, and field descriptions is:

`GET https://api.myreels.ai/api/v1/models/api`

Verified on March 18, 2026:

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% 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/code-examples.md (reported line 88)May include surrounding context.

md
The single source of truth for available models, parameter definitions, defaults, options, and field descriptions is:

`GET https://api.myreels.ai/api/v1/models/api`

Verified on March 18, 2026:

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% 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/code-examples.md (reported line 126)May include surrounding context.

md
The single source of truth for available models, parameter definitions, defaults, options, and field descriptions is:

`GET https://api.myreels.ai/api/v1/models/api`

Verified on March 18, 2026:

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% 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/code-examples.md (reported line 134)May include surrounding context.

md
The single source of truth for available models, parameter definitions, defaults, options, and field descriptions is:

`GET https://api.myreels.ai/api/v1/models/api`

Verified on March 18, 2026:

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% 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/code-examples.md (reported line 156)May include surrounding context.

md
The single source of truth for available models, parameter definitions, defaults, options, and field descriptions is:

`GET https://api.myreels.ai/api/v1/models/api`

Verified on March 18, 2026:

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% 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/code-examples.md (reported line 161)May include surrounding context.

md
The single source of truth for available models, parameter definitions, defaults, options, and field descriptions is:

`GET https://api.myreels.ai/api/v1/models/api`

Verified on March 18, 2026:

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% 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/code-examples.md (reported line 181)May include surrounding context.

md
The single source of truth for available models, parameter definitions, defaults, options, and field descriptions is:

`GET https://api.myreels.ai/api/v1/models/api`

Verified on March 18, 2026:

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% 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/code-examples.md (reported line 205)May include surrounding context.

md
The single source of truth for available models, parameter definitions, defaults, options, and field descriptions is:

`GET https://api.myreels.ai/api/v1/models/api`

Verified on March 18, 2026:

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% 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/code-examples.md (reported line 227)May include surrounding context.

md
The single source of truth for available models, parameter definitions, defaults, options, and field descriptions is:

`GET https://api.myreels.ai/api/v1/models/api`

Verified on March 18, 2026:

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% 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/errors.md (reported line 65)May include surrounding context.

md
The single source of truth for available models, parameter definitions, defaults, options, and field descriptions is:

`GET https://api.myreels.ai/api/v1/models/api`

Verified on March 18, 2026:

Static analysis

No suspicious patterns detected.