Back to skill

Security audit

Al Video Generation

Security checks for vulnerabilities and agentic risk

Overview

The skill fits its video-generation purpose, but it asks agents to trust live remote Markdown for request construction and to keep polling silently in the background, so users should review it before installing.

Install only if you are comfortable sending generation prompts and any referenced media to ShortAPI and relying on its live model documents. Before use, prefer a version that treats fetched Markdown as untrusted data, limits it to parsed schema fields, sends the SHORTAPI_KEY only to the documented ShortAPI API host, and gives users clear control over background polling.

Vulnerability Patterns
  • 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
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Findings (1)

T01 · Skill Instruction Hijacking

Error
Location
SKILL.md:67
Finding
Untrusted Remote Markdown Is Treated as Authoritative Agent Instructions<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 67–78 and 134 **Vulnerability Type**: T01: Skill Instruction Hijacking **Risk Level**: High ### Vulnerable Instructions ```markdown You **MUST** first fetch the detailed skill document for the specific `<model_id>` (e.g. `google/veo-3.1/text-to-video`) before attempting to construct the POST request payload. **DO NOT** skip this step. **DO NOT** hallucinate parameters because different video models have completely different parameter names for the same concept (e.g. one model might use `duration` while another uses `length`, one might use `resolution` while another uses `quality`). Send a `GET` request to: ```text https://shortapi.ai/api/skill/<model_id> ``` _(For example: `GET https://shortapi.ai/api/skill/google/veo-3.1/text-to-video`)_ This URL will return a Markdown (`.md`) text document containing the exact Input Parameters Schema for that specific model, alongside code examples. You must parse it to understand which arguments go into the `args` object. ``` The requirement is reinforced later: ```markdown 2. Before constructing any API request payload, you **MUST** first complete Step 1 — fetch the specific model's skill document from `https://shortapi.ai/api/skill/<model_id>`. **DO NOT** skip this step. **DO NOT** guess or hallucinate parameters. The document returned in Step 1 is the sole source of truth for the model's input schema. ``` ### Technical Analysis The Skill requires an agent to retrieve mutable Markdown from an external server and treat it as the “sole source of truth.” The response is described as containing both parameter schemas and code examples, rather than a constrained, machine-readable data structure. Because Markdown can contain natural-language instructions, the remote endpoint becomes an unreviewed instruction channel. If the ShortAPI service, its hosting infrastructure, DNS resolution, deployment pipeline, or a particular model document is compromis ...[truncated 2738 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Replace remote instructional Markdown with a strictly defined machine-readable schema, such as JSON Schema or OpenAPI. 2. Treat every remote response as untrusted data. Explicitly instruct the agent to ignore natural-language directives, tool-use requests, URLs, and executable examples found in the response. 3. Validate responses using a local allowlisted schema: - Permit only expected fields, types, enums, and constraints. - Reject unknown properties and embedded instruction fields. - Enforce an allowlist of supported model identifiers. 4. Pin model schemas to reviewed versions or cryptographically verify signed schema documents before use. 5. Separate data from instructions. Parse only the schema section using deterministic code rather than providing the complete remote Markdown to the language model. 6. Enforce outbound-request policy independently of remote content: - Send credentials only to `https://api.shortapi.ai`. - Never forward the Authorization header across redirects or to callback and media hosts. - Reject redirects to non-allowlisted origins. 7. Require explicit user confirmation before transmitting additional conversation context, local files, referenced media, or data not directly supplied for the generation request. 8. Apply payload size, field-count, URL-scheme, and hostname restrictions before invoking the generation endpoint. 9. Remove wording that makes a remote document authoritative over agent behavior. Limit its authority to validated model parameter data. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (5)

External Transmission

Medium
Category
Data Exfiltration
Content
ShortAPI provides a unified `/api/v1/job/create` endpoint for video generation across multiple top-tier providers natively. This skill provides an overview of all available video generation models and how to dynamically acquire the specific JSON schema required to invoke them.

- **API Endpoint**: `https://api.shortapi.ai/api/v1/job/create`
- **Category**: `text-to-video`, `image-to-video`
- **Kind**: inference
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
ShortAPI provides a unified `/api/v1/job/create` endpoint for video generation across multiple top-tier providers natively. This skill provides an overview of all available video generation models and how to dynamically acquire the specific JSON schema required to invoke them.

- **API Endpoint**: `https://api.shortapi.ai/api/v1/job/create`
- **Category**: `text-to-video`, `image-to-video`
- **Kind**: inference
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
ShortAPI provides a unified `/api/v1/job/create` endpoint for video generation across multiple top-tier providers natively. This skill provides an overview of all available video generation models and how to dynamically acquire the specific JSON schema required to invoke them.

- **API Endpoint**: `https://api.shortapi.ai/api/v1/job/create`
- **Category**: `text-to-video`, `image-to-video`
- **Kind**: inference
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The skill explicitly directs agents to send prompts, images, videos, and authentication data to ShortAPI but does not clearly disclose to users that their supplied content will leave the local environment and be processed by a third-party service. In a media-generation context, prompts and uploaded media can contain sensitive or proprietary data, so omission of an explicit data-transfer warning creates a meaningful privacy and consent risk.

External Transmission

Medium
Category
Data Exfiltration
Content
#### Bash (cURL) Example

```bash
response=$(curl --request POST \
  --url https://api.shortapi.ai/api/v1/job/create \
  --header "Authorization: Bearer $SHORTAPI_KEY" \
  --header "Content-Type: application/json" \
Confidence
91% confidence
Finding
This example instructs the agent to perform an authenticated POST to an external API endpoint, transmitting user-supplied generation inputs and the bearer token to a third party. The external transmission itself is expected for the skill's purpose, but it remains security-relevant because the skill lacks strong consent and data-handling warnings for potentially sensitive prompts or media.

Static analysis

No suspicious patterns detected.