Back to skill

Security audit

keyframe-animation

Security checks for vulnerabilities and agentic risk

Overview

The skill’s video-generation purpose is clear, but its missing-core recovery instructions are too broad for a single helper dependency and should be reviewed before installation.

Before installing, prefer a scoped, pinned installation of only ofox-video-core from a publisher/version you trust. Avoid running the wildcard global --yes command unless you intentionally want all of that publisher’s skills installed for all agents. Expect the workflow to use your OFOX_API_KEY and send the selected images to Ofox for generation, and approve paid jobs only after reviewing the dry-run cost table.

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

T08 · Insecure Dependencies

Warning
Location
SKILL.md:542
Finding
Unpinned Third-Party Packages Used for Unattended Global Skill Installation## Vulnerability Details **File Location**: `SKILL.md`, lines 542-545 **Vulnerability Type**: Unpinned and overly broad third-party dependency installation **Risk Level**: Medium ### Vulnerable Code ```text fix belongs to whichever installer the user already has: `npx ofox-skills` (this repo's own) or the underlying `npx skills add ofoxai/skills --skill '*' --agent '*' --global --yes` for skills.sh; on LobeHub or ClawHub, install `ofox-video-core` from the same publisher. ``` ### Technical Analysis The skill directs users or agents to invoke packages through `npx` without pinning an audited version or verifying package integrity. The second command also uses `--skill '*'`, `--agent '*'`, `--global`, and `--yes`, causing every available skill from the publisher to be installed globally and without an interactive confirmation step. Because npm package names and publisher content are mutable, the code executed by these commands may differ from the version reviewed when this skill was published. The installed `ofox-video-core` dependency is especially security-sensitive because the audited documentation delegates API-key handling, image uploads, network requests, polling, and file downloads to that component. Its implementation is not included in this project and therefore could not be verified during this audit. This is a supply-chain weakness rather than evidence that the current publisher or dependency is malicious. Exploitation would require compromise of the relevant package, publisher account, distribution channel, or a future package release. ### Attack Path 1. An attacker compromises the npm package, its publisher account, or another source used to distribute `ofox-video-core` or the associated skill collection. 2. The attacker publishes a malicious version under the expected package or publisher identity. 3. The local core script is unavailable, causing the user or agent to follow the installation recovery instr ...[truncated 1354 chars]
Remediation
## Remediation Suggestions 1. Pin the installer and dependency to explicitly reviewed versions, for example by using an exact package version rather than the mutable latest release. 2. Record and verify npm integrity hashes or signed release artifacts before executing downloaded package code. 3. Install only the required `ofox-video-core` skill instead of using `--skill '*'`. 4. Restrict installation to the specific Agent that needs the dependency instead of using `--agent '*'`. 5. Avoid global installation unless it is operationally necessary; prefer a project-scoped, isolated dependency directory. 6. Remove `--yes` where practical so users can review the package identity, version, requested scope, and installation target. 7. Vendor the reviewed `ofox-video-core` implementation with the skill, or provide a lockfile and reproducible installation procedure. 8. Run installation and video-generation components with least privilege and expose only the specific files and environment variables required for the task. 9. Document the trusted package name, expected publisher identity, minimum secure version, checksum, and verification procedure.
Vulnerability Patterns
  • Rogue AgentSelf-Modification, Session Persistence
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (8)

Ae1

High
Category
analysis-evasion
Content
one this `SKILL.md` sits in. From anywhere else nothing resolves — use the
Confidence
100% confidence
Finding
Referenced artifact was not completely inspected

Ae1

High
Category
analysis-evasion
Content
one this `SKILL.md` sits in. From anywhere else nothing resolves — use the
Confidence
100% confidence
Finding
Referenced artifact was not completely inspected

Session Persistence

Medium
Category
Rogue Agent
Content
---
name: keyframe-animation
description: Requires OFOX_API_KEY — create one at https://app.ofox.ai, plus two images you already have, a start frame and an end frame. Animates the motion between them as one video — both frames go into a single Ofox video job, the clip opens on A, closes on B, and the model fills the middle. Use when a user has two stills and wants the in-between animated, e.g. "here is the before and the after, animate the transition", "make a video that starts on this image and ends on that one", "tween these two frames", or "move the object from where it sits in the first picture to where it sits in the second". Do not use when only one image exists (animating a single frame is seedance-ad-creative or seedance-product-video), or when the pair is two states of a user interface (see product-demo).
license: MIT
version: "1.0.1"
homepage: https://github.com/ofoxai/skills/tree/main/skills/keyframe-animation
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.

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.

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.

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.

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.

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.

Static analysis

No suspicious patterns detected.