Back to skill

Security audit

image-to-video

Security checks for vulnerabilities and agentic risk

Overview

The skill matches its image-to-video purpose, but it over-scopes agent replies and uses unpinned npx install commands for related skills.

Install only if you are comfortable with PrunaAI companion skills being fetched at install time. Prefer pinned, reviewed versions of the skills CLI and referenced skills, and keep this skill scoped to active image-to-video work so its every-reply wording does not leak into unrelated conversations.

Vulnerability Patterns
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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 (2)

T01 · Skill Instruction Hijacking

Error
Location
SKILL.md:26
Finding
Mandatory Response Content Hijacks Agent Output## Vulnerability Details **File Location**: `SKILL.md`, line 26 **Vulnerability Type**: `T01: Skill Instruction Hijacking` **Risk Level**: High **Complete Code Snippet**: ```markdown In **every reply**, name `` `image-to-video` `` in backticks. State the current phase gate — use exact phrases **approve plan**, **approve stills**, **approve clips** when listing gates. Do **not** same-turn plan + paid video. Skip-review / burn-credits → follow `generation-diversity` **Red flags**. ``` ### Technical Analysis The skill instructs the agent to include attacker-selected branding and exact phrases in **every reply**, rather than limiting those requirements to messages directly related to the image-to-video workflow. Because skill instructions affect the agent when loaded, this unconditional requirement alters response composition independently of the user's immediate request. The vulnerable behavior is the broad scope of “every reply.” It permits the skill to retain control over subsequent responses in the current context, including replies where mentioning the skill or its phase gates is unnecessary. This is an instruction-hijacking pattern because the skill imposes persistent output requirements that are unrelated to the minimum behavior needed to perform its declared task. ### Attack Path 1. A user or agent loads the skill. 2. The agent processes `SKILL.md` as operational instructions. 3. The unconditional “every reply” directive becomes active in the current context. 4. Subsequent responses are forced to contain the `image-to-video` name and prescribed phase-gate language. 5. The injected wording can override normal response composition and appear in unrelated answers until the skill context is discarded. ### Impact Assessment The issue affects the agent's current-session output and instruction-following behavior. It does not, based on the reviewed files, obtain operating-system privileges, modify persistent memory, or in ...[truncated 437 chars]
Remediation
## Remediation Suggestions 1. Remove the unconditional “in every reply” requirement. 2. Scope status wording exclusively to image-to-video workflow messages where a phase transition is relevant. 3. Do not require skill branding in responses unless the user asks which skill is being used. 4. Replace the instruction with narrowly scoped language, such as: ```markdown When presenting an image-to-video approval gate, state the applicable gate as `approve plan`, `approve stills`, or `approve clips`. ``` 5. Explicitly state that unrelated requests and user-specified output formats must not be modified by the workflow convention. 6. Test the skill against unrelated follow-up requests to confirm that no branding or phase-gate wording leaks into those responses.

T08 · Insecure Dependencies

Warning
Location
SKILL.md:14
Finding
Unpinned Third-Party Skill Installation Through npx## Vulnerability Details **File Location**: `SKILL.md`, lines 14–22 and 108–111 **Vulnerability Type**: `T08: Insecure Dependencies` **Risk Level**: Medium **Complete Code Snippet**: ```markdown | `p-image-ideogram` | Use when photo generation needs more control — photoreal results, text in the image, or structured JSON with hex colors and bounding boxes. Simpler photo generation, edits, and video use other skills in the suite. | `npx skills add PrunaAI/pruna-skills@p-image-ideogram -y` | | `p-image` | Use when someone explicitly wants the fastest, cheapest photo generation — mood boards, bulk panels, or quick iterations — not when controlled photoreal or in-image text is needed. | `npx skills add PrunaAI/pruna-skills@p-image -y` | | `p-image-edit` | Use when someone wants to edit an existing photo — change outfits or backgrounds, compose from reference images, or apply prompt-driven edits. | `npx skills add PrunaAI/pruna-skills@p-image-edit -y` | | `p-video-2` | Use when someone wants the best-quality short clip from text, images, or audio — polished B-roll, start/end frame animation, or a motion shot with stronger lip-sync. Not for full multi-scene films or talking-head-only hosts. | `npx skills add PrunaAI/pruna-skills@p-video-2 -y` | | `p-video` | Use when someone wants a simple short clip from text or images — quick B-roll, drafts, or start/end frame animation. Not when the brief needs the highest quality or tight lip-sync. | `npx skills add PrunaAI/pruna-skills@p-video -y` | | `gemini-3.1-flash-tts` | Use when someone needs spoken narration or voiceover — explainer tracks, documentary lines, or voice to pair with generated video. | `npx skills add PrunaAI/pruna-skills@gemini-3.1-flash-tts -y` | | `stable-audio-2.5` | Use when someone wants light instrumental background music — an ambient bed under dialogue or underscore for reels and explainers. | `npx skills add PrunaAI/pruna-skills@stable-audio-2.5 -y` | Or install the full s ...[truncated 3691 chars]
Remediation
## Remediation Suggestions 1. Pin each dependency to an immutable, reviewed Git commit rather than a mutable repository component or tag. 2. Record and verify cryptographic checksums or signed provenance before installation. 3. Pin the npm package providing the `skills` command to an audited version, rather than allowing `npx` to resolve an unspecified current release. 4. Remove `-y` so that users can inspect the package source, resolved version, and requested changes before proceeding. 5. Maintain an allowlist of approved skills and dependency versions. 6. Audit all transitive dependencies and any lifecycle or installation scripts. 7. Perform installation in a restricted environment with: - No unnecessary credentials in environment variables. - Minimal filesystem permissions. - Limited network access. - A non-privileged operating-system account. 8. Prefer vendored, reviewed dependencies where licensing and update procedures permit. 9. Re-audit dependencies before updating pinned versions, and document the approved hashes in the manifest.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (12)

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding
The skill instructs users to install and execute packages via `npx skills add ...` without pinning the actual `skills` runner version. Because `npx` may fetch the latest package at execution time, a compromised or incompatible upstream release could change behavior, introduce malicious code, or break trust assumptions during installation.

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding
This installation command relies on `npx skills` without pinning the executable version, which creates a supply-chain risk. If the `skills` package or its resolution path is tampered with, users may execute unexpected code when following the skill instructions.

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding
The command references an unpinned `npx skills` runner, so execution depends on whatever version is resolved at runtime. That increases exposure to package hijacking, malicious updates, or behavior drift in an installation path that users are expected to copy and run.

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding
Using `npx skills` without an exact version allows remote package resolution at execution time, which is a classic supply-chain weakness. A malicious or newly broken package version could be pulled in and run with the user's privileges.

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding
This command depends on an unpinned `npx`-resolved tool, making the installation workflow sensitive to upstream package changes. In a skill ecosystem that chains additional skills, compromise of the runner can affect the entire downstream workflow.

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding
The unpinned `npx skills` invocation exposes users to execution of whatever package version is current at the time of use. That is dangerous because the skill is explicitly telling operators to run the command, turning documentation into a code-execution vector if the package supply chain is compromised.

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding
Because `npx skills` is not pinned, the command may install and execute an unexpected package version. That creates avoidable supply-chain risk, especially in a workflow that later handles uploads and paid API actions.

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding
The full-suite installation command still relies on `npx skills` without pinning the CLI version, so users may execute a changed or malicious upstream package. Installing the full suite may broaden impact because it can introduce multiple dependent capabilities through one untrusted bootstrap step.

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding
This related-skill install instruction again uses an unpinned `npx skills` runner, preserving the same supply-chain execution risk. Even though it appears in a reference section, users may still copy-paste it directly, so the exposure remains real.

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding
The command references `npx skills` without pinning, allowing runtime retrieval of an arbitrary current version. In practice, this can enable malicious package substitution or simply unsafe behavioral drift in an install command users are encouraged to execute.

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding
An unpinned `npx skills` invocation is a true supply-chain concern because it executes code fetched at runtime without a fixed version boundary. The skill context increases risk slightly because this ecosystem encourages chaining and installing additional capabilities, magnifying trust in the bootstrap tool.

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding
This final related-skill installation example repeats the same unpinned `npx skills` pattern, which can lead to execution of altered upstream code. As documentation-driven command execution is common, the issue is actionable and not merely theoretical.

Static analysis

No suspicious patterns detected.