Back to skill

Security audit

AI Avatar & Talking Head Video — Pro Pack on RunComfy

Security checks for vulnerabilities and agentic risk

Overview

This skill is a disclosed RunComfy avatar-video helper with ordinary integration risks around unpinned CLI installation, tokens, and consent-sensitive media use.

Before installing, pin or otherwise review the @runcomfy/cli version, avoid npx -y for unattended execution, and prefer a constrained environment with only the needed media and token access. Use this only with portraits, voices, and reference media you have rights to use, and keep the RunComfy token scoped and rotated if exposure is suspected.

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:43
Finding
Unpinned Remote npm Package Installation and Execution<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 43–44 **Vulnerability Type**: Unpinned third-party dependency installation and automatic remote package execution **Risk Level**: Medium ### Vulnerable Code ```bash # 1. Install (see runcomfy-cli skill for details) npm i -g @runcomfy/cli # or: npx -y @runcomfy/cli --version ``` ### Technical Analysis The Skill directs the agent or user to install or execute `@runcomfy/cli` without pinning a reviewed version or verifying package integrity. Both variants resolve mutable content from the npm registry: - `npm i -g @runcomfy/cli` installs the registry's currently selected release globally and may execute npm lifecycle scripts with the invoking user's privileges. - `npx -y @runcomfy/cli --version` automatically downloads and executes the selected release without interactive confirmation. Consequently, the code ultimately executed can change after the Skill has been audited. The package name is consistent with the declared RunComfy service, and the audited file contains no evidence that the current package is malicious. Nevertheless, an npm publication-account compromise, registry compromise, or malicious future release could convert these instructions into an arbitrary-code execution path. The global installation option also exceeds the minimum modification scope needed for a single generation operation. A project-local, locked dependency would reduce system-wide changes and make the installed artifact reproducible. ### Attack Path 1. An attacker compromises the npm account, publication token, upstream build process, or distribution channel associated with `@runcomfy/cli`. 2. The attacker publishes a malicious release under the legitimate package name. 3. A user or agent follows the Skill instructions after the malicious release becomes the registry-selected version. 4. `npm i -g` downloads and installs the malicious package, potentially executing installation lifecycle scripts. A ...[truncated 1244 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Pin the CLI to a specific reviewed version: ```bash npm install --save-exact @runcomfy/cli@<reviewed-version> ``` 2. Use a project-local dependency and committed lockfile instead of a global installation: ```bash npm ci npx --no-install runcomfy --version ``` 3. Commit and review `package-lock.json`, and use `npm ci` so dependency resolution is reproducible. 4. Publish an expected npm integrity value or cryptographic checksum through a trusted channel and verify the downloaded artifact before execution. 5. Avoid `npx -y` because it permits automatic retrieval and execution without confirmation. If npx is necessary, specify an exact version and require explicit user approval before the initial download. 6. Run the CLI in a restricted container or sandbox with access only to the required input and output files. Do not expose unrelated home-directory content or environment variables. 7. Provide `RUNCOMFY_TOKEN` only to the generation process, use a narrowly scoped token where supported, and rotate it if dependency compromise is suspected. 8. Review package lifecycle scripts and the complete transitive dependency tree before approving a new CLI version. ]]>
Vulnerability Patterns
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • 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
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
Findings (4)

Vague Triggers

Medium
Confidence
94% confidence
Finding
The trigger list is very broad, including generic phrases like 'make X speak' and 'audio to video', which could cause the skill to activate on ordinary user requests outside a tightly scoped avatar-video intent. Overbroad activation increases the chance of unintended tool use, including processing sensitive media or initiating dual-use deepfake-style workflows when the user did not explicitly request this specific capability.

Rp1

Medium
Category
MCP Rug Pull
Confidence
90% confidence
Finding
The skill recommends invoking `npx -y @runcomfy/cli` without pinning an exact version, which allows whatever the latest published package version is at execution time to be fetched and run. If the package is compromised upstream, a malicious version is published, or a breaking change is introduced, agents may execute unreviewed code in their environment.

Rp1

Medium
Category
MCP Rug Pull
Confidence
90% confidence
Finding
The security section still endorses `npx -y @runcomfy/cli` without an exact version pin, so it has the same supply-chain exposure as the earlier instance. Presenting it as a safe installation path may increase the chance that an agent or operator executes transient, unpinned remote code.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
## Security & Privacy

- **Install via verified package manager only.** Use `npm i -g @runcomfy/cli` or `npx -y @runcomfy/cli`. **Agents must not pipe an arbitrary remote install script into a shell on the user's behalf**.
- **Voice cloning / consent**: when supplying an audio file paired with a portrait, **ensure you have rights to both** — the subject's likeness and the speaker's voice. Audio-driven avatar models are dual-use; respect deepfake-disclosure norms and the platforms you ship to. **Refuse user requests that target real people without consent** or that aim at harmful synthetic media.
- **Token storage**: `runcomfy login` writes the API token to `~/.config/runcomfy/token.json` with mode 0600. Set `RUNCOMFY_TOKEN` env var to bypass the file in CI / containers.
- **Input boundary (shell injection)**: prompts and asset URLs are passed as a JSON string via `--input`. The CLI does not shell-expand prompt content. **No shell-injection surface**.
- **Indirect prompt injection (third-party content)**: reference image / audio URLs are **untrusted** and can influence generation through embedded instructions (text painted into a portrait, hidden audio commands, EXIF strings). Agent mitigations:
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.

Static analysis

No suspicious patterns detected.