Back to skill

Security audit

Yino.ai - Agent First AI Music Video Generator

Security checks for vulnerabilities and agentic risk

Overview

This yino.ai media-generation skill is mostly coherent, but it documents API-key handling that could expose the user's credential.

Install only if you trust the yino.ai API key and configured endpoint. Before use, avoid printing YINO_API_KEY, keep YINO_API_BASE_URL on the official HTTPS origin unless deliberately testing localhost, and treat uploaded images/audio as data shared with the service.

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
SKILL.md:31
Finding

API Key Exposure Through Secret Printing and Unvalidated Authentication Endpoint

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 31-46
Vulnerability Type: Sensitive credential exposure and unsafe endpoint configuration
Risk Level: Medium

Vulnerable Code

markdown
1. `echo $YINO_API_KEY` — must be set. Get one at https://yino.ai/settings (API Keys section).
2. `echo ${YINO_API_BASE_URL:-https://yino.ai}` — defaults to production. Set `YINO_API_BASE_URL=http://localhost:3000` for local dev.

If either fails, stop and tell the user.

## Auth

Every request needs: `Authorization: Bearer $YINO_API_KEY`

## Step 1: Discover Capabilities

**Always start here.** Don't assume model names or parameters — discover them:

```bash
curl "${YINO_API_BASE_URL:-https://yino.ai}/api/agent/capabilities" \
  -H "Authorization: Bearer $YINO_API_KEY"
text

### Technical Analysis

The preflight procedure prints `YINO_API_KEY` directly. This unnecessarily exposes the credential in shell output, agent tool results, execution transcripts, terminal scrollback, and any logs that capture command output. Verifying that a secret exists does not require disclosing its value.

Authenticated requests also derive their destination directly from the environment-controlled `YINO_API_BASE_URL`. The instructions do not validate the URL scheme, hostname, port, or resolved destination before attaching the bearer credential. Consequently, a modified environment can redirect the mandatory capability-discovery request to an attacker-controlled server.

The documented local-development configuration permits plaintext HTTP. Although loopback HTTP may be acceptable in a controlled development environment, the Skill does not enforce a loopback destination. A value using `http://` with a non-loopback host could transmit the bearer token without transport encryption.

Network access and bearer authentication are necessary for the declared hosted media-generation functionality. Printing the secret and allowing unres
...[truncated 1627 chars]
Remediation
View remediation

Remediation Suggestions

  1. Do not print the API key. Check only whether it is present:

    bash
    if [ -z "${YINO_API_KEY:-}" ]; then
      echo "YINO_API_KEY is not configured" >&2
      exit 1
    fi
    
  2. Restrict authenticated production requests to an approved HTTPS origin. Default to https://yino.ai and reject unexpected schemes, hosts, embedded credentials, fragments, and ports before adding the authorization header.

  3. Separate local development from production behavior. Require an explicit development-mode opt-in. If plaintext HTTP is necessary, permit it only for validated loopback destinations such as localhost, 127.0.0.1, or [::1].

  4. Prevent cross-origin credential forwarding. Disable redirects for authenticated requests or verify that every redirect remains on the approved origin before resending credentials.

  5. Redact sensitive values. Ensure command tracing, verbose HTTP output, errors, transcripts, and logs never include bearer tokens or authorization headers.

  6. Confirm the upload destination. Before uploading user images or audio, display the validated destination host and obtain user confirmation when the content may be private or sensitive.

  7. Rotate exposed credentials. Any key previously printed to retained logs or sent to an untrusted endpoint should be revoked and replaced.

Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (4)

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The trigger list includes broad activation concepts such as media-generation tasks, which can cause the skill to be selected for requests that only loosely relate to yino.ai. Overbroad routing increases the chance of unintended tool use and unnecessary exposure of HTTP/bash capabilities in contexts where a narrower skill should have been used.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The single-word trigger "veo" is vague enough to collide with incidental mentions, abbreviations, or unrelated discussion, potentially activating the skill unintentionally. In a skill with network and shell tools, false activations can lead to unnecessary external requests or workflow changes the user did not intend.

Content

No source excerpt is available for this finding.

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
75% 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 107)May include surrounding context.

md
## Caching

If the user repeats the same type of task 3-4 times, ask if they'd like you to save the common parameters as a note in their workspace. Don't save anything without asking.

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/project-preview.md (reported line 33)May include surrounding context.

Use PATCH /api/agent/generations/:id to assign existing generations:

bash
curl -X PATCH "${YINO_API_BASE_URL}/api/agent/generations/<gen_id>" \
  -H "Authorization: Bearer $YINO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"project_id": "proj_xxx"}'

Static analysis

No suspicious patterns detected.