Back to skill

Security audit

Ad Creative

Security checks for vulnerabilities and agentic risk

Overview

This ad-creative skill is mostly coherent, but it reaches into campaign-management, voice-cloning, and unpinned external tool workflows that deserve review before use.

Review this before installing. It is suitable for ad creative work only if you keep campaign changes under explicit human approval, use read-only ad-platform access by default, avoid voice cloning without documented rights and consent, and pin or sandbox any external tools before running the referenced setup commands.

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 (2)

T08 · Insecure Dependencies

Warning
Location
references/generative-tools.md:414
Finding

Unpinned Voicebox Repository Retrieval and Execution

Content
View full analysis

Vulnerability Details

File Location: references/generative-tools.md, lines 414-418
Vulnerability Type: Unpinned third-party repository execution
Risk Level: Medium

Vulnerable Code:

bash
**Install:** Desktop apps for macOS and Windows at [voicebox.sh](https://voicebox.sh), or build from source:
```bash
git clone https://github.com/jamiepine/voicebox.git
cd voicebox && make setup && make dev
text

### Technical Analysis

The documented workflow clones the current default branch of an external GitHub repository and immediately invokes its Make targets. It does not pin a reviewed commit or signed release and provides no checksum or signature verification.

The effective code executed by `make setup` and `make dev` is controlled by the repository state at the time the user runs these commands. Those targets may install dependencies, execute build scripts, or launch arbitrary local commands. Consequently, compromise of the upstream repository, maintainer account, build configuration, or transitive dependencies could turn this documented installation workflow into arbitrary code execution.

This is not automatic execution by the skill itself; exploitation requires a user or agent to follow the documented commands.

### Attack Path

1. An attacker compromises the upstream Voicebox repository, a maintainer account, or a dependency used by its setup process.
2. The attacker modifies the default branch, Makefile, setup scripts, or dependency declarations to include a malicious payload.
3. A user follows the skill documentation and runs `git clone` without selecting a reviewed commit.
4. The user executes `make setup` or `make dev`.
5. The attacker-controlled commands run with the privileges of the invoking user.

### Impact Assessment

Successful exploitation could provide arbitrary code execution under the invoking user's account. The payload could access readable project files, envi
...[truncated 431 chars]
Remediation
View remediation

Remediation Suggestions

  • Pin the repository to a reviewed commit hash or a cryptographically signed release tag.
  • Publish the expected commit identifier and release checksum in the documentation.
  • Verify release signatures and checksums before running setup commands.
  • Instruct users to inspect the Makefile, setup scripts, and dependency manifests before execution.
  • Run the build in a restricted container or sandbox without access to production credentials or sensitive project directories.
  • Avoid elevated privileges and provide the minimum filesystem and network permissions required.
  • Use dependency lockfiles with integrity metadata for dependencies installed by the setup process.

T08 · Insecure Dependencies

Warning
Location
references/generative-tools.md:561
Finding

Mutable npm Package Execution Through Latest Tag and Unpinned CLI Commands

Content
View full analysis

Vulnerability Details

File Location: references/generative-tools.md, lines 561-569
Vulnerability Type: Unpinned npm dependency retrieval and execution
Risk Level: Medium

Vulnerable Code:

bash
# Create a new Remotion project
npx create-video@latest

# Render a single video
npx remotion render src/index.ts MyComposition out/video.mp4

# Batch render from data
npx remotion render src/index.ts MyComposition --props='{"data": [...]}'

Technical Analysis

npx create-video@latest explicitly resolves the mutable npm latest distribution tag and executes the downloaded package. The effective package version can therefore change after the skill has been reviewed. npm lifecycle hooks and package entry points can execute arbitrary commands during installation or invocation.

The npx remotion examples also omit an exact package version. Depending on the local project and npm behavior, npx may execute a locally installed binary or retrieve a package from the configured registry. Without an exact version, lockfile, registry restriction, and integrity verification, users cannot reliably ensure that the executed code is the version that was previously reviewed.

Exploitation requires a user or agent to run these documented commands; merely loading the skill does not execute them.

Attack Path

  1. An attacker compromises the relevant npm package, package maintainer account, registry resolution path, or a package dependency.
  2. A malicious release is assigned to the latest tag, or an unpinned invocation resolves to an attacker-controlled version.
  3. A user runs the documented npx command.
  4. npm downloads the mutable package and any required dependencies.
  5. Malicious lifecycle scripts or CLI entry-point code execute with the invoking user's privileges.

Impact Assessment

Successful exploitation could result in arbitrary code execution as the invoking user. An attacker could read s ...[truncated 482 chars]

Remediation
View remediation

Remediation Suggestions

  • Replace @latest with an exact, reviewed package version.
  • Pin the Remotion CLI to an exact version rather than relying on implicit npm resolution.
  • Use a committed lockfile and deterministic installation such as npm ci.
  • Retain and verify npm integrity hashes in the lockfile.
  • Configure an approved registry and consider allowlisting package names and versions.
  • Review package provenance, signatures, maintainers, lifecycle scripts, and release history before upgrades.
  • Execute scaffolding and rendering tools in a sandbox or container with restricted credentials, filesystem access, and network access.
  • Upgrade versions through a controlled review process instead of automatically tracking mutable distribution tags.
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (12)

Anti-Refusal Statement

High
Category
Anti-Refusal
Confidence
80% confidence
Finding

Skill instructs the agent to omit warnings, disclaimers, or ethical commentary. Stripping safety caveats hides risk from the user and is a common jailbreak preamble.

Content

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

md
## Common Mistakes

- **Writing headlines that only work together** — RSA headlines get combined randomly
- **Ignoring character limits** — Platforms truncate without warning
- **All variations sound the same** — Vary angles, not just word choice
- **No CTA headlines** — RSAs need action-oriented headlines to drive clicks; include at least 2-3
- **Generic descriptions** — "Learn more about our solution" wastes the slot

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The activation text contains many broad, ordinary phrases such as 'write me some ads' and 'I need more ad variations,' making this skill likely to trigger in situations that may not require it. Over-broad routing increases accidental invocation and, combined with the embedded tool references, raises the risk of exposing campaign-related capabilities during simple writing tasks.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The skill is scoped as ad-creative generation, but the Tool Integrations section expands into pulling performance data and managing campaigns, including direct references to campaign creation/listing actions. This scope creep increases the chance an agent will invoke higher-impact ad platform operations than the user intended, violating least privilege and enabling unintended external actions.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

Including campaign creation capability in a copywriting-focused skill is an unjustified privilege expansion. If selected automatically, the agent may gain a path from benign copy requests to operational ad account changes, which can cause budget spend, policy violations, or unauthorized campaign launches.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

This file is JSON, so SQP-1 applies. The expected behavior and assertion explicitly say the skill should 'trigger on casual phrasing,' but they do not specify boundaries, exclusion conditions, or concrete trigger phrases, making activation overly broad and likely to overlap with ordinary user requests.

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 · references/generative-tools.md (reported line 50)May include surrounding context.

API example:

bash
# Using the Gemini API for image generation
curl -X POST "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash-image:generateContent" \
  -H "Content-Type: application/json" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -d '{

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The guide explicitly promotes voice cloning for ads and brand spokesperson replication without any warning about consent, impersonation, contractual rights, or platform/legal restrictions. In an ad-creative skill, this omission is more dangerous because users are being encouraged to operationalize cloned voices at scale, increasing the risk of deceptive advertising, unauthorized impersonation, and rights violations.

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 · references/generative-tools.md (reported line 322)May include surrounding context.

API example:

bash
curl -X POST "https://api.elevenlabs.io/v1/text-to-speech/{voice_id}" \
  -H "xi-api-key: $ELEVENLABS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{

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 · references/generative-tools.md (reported line 322)May include surrounding context.

API example:

bash
curl -X POST "https://api.elevenlabs.io/v1/text-to-speech/{voice_id}" \
  -H "xi-api-key: $ELEVENLABS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{

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.

Content

No source excerpt is available for this finding.

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.

Content

No source excerpt is available for this finding.

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.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.