Back to skill

Security audit

(Google) Veo 3 Video Gen

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent Pixwith video generator, but its shell-command templates could mishandle crafted prompts or image URLs and run unintended local commands.

Review this skill before installing. It appears intended for Pixwith video generation and will send prompts, image URLs, uploaded images, and the Pixwith API key to Pixwith-related services. Use it only with non-sensitive prompts/images, and prefer an implementation that builds request bodies with a JSON serializer rather than substituting user text into shell commands.

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

Error
Location
SKILL.md:116
Finding

Shell Command Injection Through Unsafe Request-Body Interpolation

Content
View full analysis
", "model_id": "2-11", "options": { "prompt_optimization": true, "aspect_ratio": "16:9" } }' ``` Lines 199–211: ```bash curl -s -X POST https://api.pixwith.ai/api/task/create \ -H "Content-Type: application/json" \ -H "Api-Key: $PIXWITH_API_KEY" \ -d '{ "prompt": "", "image_urls": ["", ""], "model_id": "2-11", "options": { "prompt_optimization": true, "aspect_ratio": "16:9" } }' ``` ### Technical Analysis The documented commands place user-controlled prompts and image URLs directly inside a single-quoted shell argument. The skill does not require these values to be encoded with a JSON serializer or passed through a mechanism that keeps data separate from shell syntax. If an implementation follows these examples by textual substitution, a value containing a single quote can terminate the quoted JSON argument. Subsequent shell metacharacters can then be interpreted as command syntax rather than request data. This issue applies to the following externally controlled values: - `` - `` - `` - `` JSON escaping alone is insufficient if the resulting JSON is subsequently embedded in shell source. Both JSON serialization and safe process argument handling are required. ### Attack Path 1. An attacker provides a crafted video prompt or image URL containing a single quote, shell separators, and an operating-system command. 2. The agent substitutes the supplied v ...[truncated 1386 chars]
Remediation
View remediation
"$request_file" curl -sS -X POST "https://api.pixwith.ai/api/task/create" \ -H "Content-Type: application/json" \ -H "Api-Key: $PIXWITH_API_KEY" \ --data-binary "@$request_file" ``` 2. Build `image_urls` as a JSON array through the serializer rather than interpolating URLs into JSON or shell source. 3. Prefer invoking HTTP clients through a structured process-execution API that passes each argument separately and does not invoke `/bin/sh`. 4. Apply the same safe construction pattern to all API-derived and user-controlled values, including prompts, image URLs, task IDs, upload URLs, and presigned form fields. 5. Validate expected value types and constraints before use, while treating validation as defense in depth rather than a replacement for safe serialization. 6. Create temporary request files with restrictive permissions and ensure they are removed reliably. 7. Add tests containing single quotes, double quotes, newlines, command separators, command substitutions, and other shell metacharacters to verify that they remain inert data. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • System Prompt LeakageDirect Leakage, Indirect Extraction, Tool-Based Exfiltration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (10)

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 83)May include surrounding context.

Verify by running:

bash
curl -s -X POST https://api.pixwith.ai/api/task/get_credits \
  -H "Content-Type: application/json" \
  -H "Api-Key: $PIXWITH_API_KEY"

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 117)May include surrounding context.

Verify by running:

bash
curl -s -X POST https://api.pixwith.ai/api/task/get_credits \
  -H "Content-Type: application/json" \
  -H "Api-Key: $PIXWITH_API_KEY"

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 127)May include surrounding context.

Verify by running:

bash
curl -s -X POST https://api.pixwith.ai/api/task/get_credits \
  -H "Content-Type: application/json" \
  -H "Api-Key: $PIXWITH_API_KEY"

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 149)May include surrounding context.

Verify by running:

bash
curl -s -X POST https://api.pixwith.ai/api/task/get_credits \
  -H "Content-Type: application/json" \
  -H "Api-Key: $PIXWITH_API_KEY"

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 179)May include surrounding context.

Verify by running:

bash
curl -s -X POST https://api.pixwith.ai/api/task/get_credits \
  -H "Content-Type: application/json" \
  -H "Api-Key: $PIXWITH_API_KEY"

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 220)May include surrounding context.

Verify by running:

bash
curl -s -X POST https://api.pixwith.ai/api/task/get_credits \
  -H "Content-Type: application/json" \
  -H "Api-Key: $PIXWITH_API_KEY"

Indirect Prompt Extraction

Medium
Category
System Prompt Leakage
Confidence
82% confidence
Finding

The instruction to translate prompts to English by default creates a secondary processing path for all user inputs. In security-sensitive environments, that can leak confidential text to external processing components and produce outputs that no longer faithfully reflect the user's exact wording.

Content

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

md
- **image_urls** (optional): 1–2 publicly accessible image URLs.
  - 1 image → used as the start frame.
  - 2 images → first is the start frame, second is the end frame.
- **options.prompt_optimization** (boolean, default `true`): Auto-translate prompt to English.
- **options.aspect_ratio** (required): `16:9` or `9:16`.

## Workflow A — Text-to-Video

Indirect Prompt Extraction

Medium
Category
System Prompt Leakage
Confidence
82% confidence
Finding

The instruction to translate prompts to English by default creates a secondary processing path for all user inputs. In security-sensitive environments, that can leak confidential text to external processing components and produce outputs that no longer faithfully reflect the user's exact wording.

Content

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

md
- **image_urls** (optional): 1–2 publicly accessible image URLs.
  - 1 image → used as the start frame.
  - 2 images → first is the start frame, second is the end frame.
- **options.prompt_optimization** (boolean, default `true`): Auto-translate prompt to English.
- **options.aspect_ratio** (required): `16:9` or `9:16`.

## Workflow A — Text-to-Video

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The skill defaults options.prompt_optimization to true and describes it as automatic translation of the user's prompt to English. That causes user-supplied content to be transmitted for additional processing without explicit user opt-in, which can expose sensitive prompts or alter user intent in privacy- or compliance-sensitive contexts.

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 117)May include surrounding context.

Step 1: Check credits

bash
curl -s -X POST https://api.pixwith.ai/api/task/get_credits \
  -H "Content-Type: application/json" \
  -H "Api-Key: $PIXWITH_API_KEY"

Static analysis

No suspicious patterns detected.