Back to skill

Security audit

product-page-designer

Security checks for vulnerabilities and agentic risk

Overview

This product-page skill is mostly coherent, but it tells agents to run an unpinned third-party CLI and upload images without clear scoping or approval safeguards.

Review this skill before installing if you expect it to only draft product-page copy. Do not run the WaveSpeed CLI commands as written in a sensitive workspace; pin and review the CLI version, use a restricted environment, confirm what images may be uploaded, and verify all generated product specifications before publishing.

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:249
Finding

Unpinned WaveSpeed CLI Package Is Executed Through npx

Content
View full analysis

Vulnerability Details

File Locations:

  • SKILL.md:249-255
  • references/brand-hallucination-fix.md:31-39

Vulnerability Type: Unpinned third-party dependency execution
Risk Level: Medium

Vulnerable Code

SKILL.md:249-255:

bash
URL=$(npx @wavespeed/cli upload ./generated.png --json | jq -r .url)
# 2. Edit to remove branding
PROMPT="Remove all text and brand logos from the image. Keep everything else identical — same lighting, pose, composition, colors. Clean unbranded surface."
npx @wavespeed/cli run bytedance/seedream-v4.5/edit \
  -i prompt="$PROMPT" \
  -i images="[\"$URL\"]" \
  --json --download "./clean-{index}.{ext}"

references/brand-hallucination-fix.md:31-39:

bash
URL=$(npx @wavespeed/cli upload ./image.png --json | jq -r .url)

# Targeted removal (be SPECIFIC about which object)
PROMPT="Remove all text and brand logos from the [SPECIFIC OBJECT]. Keep everything else identical — same lighting, pose, composition, colors."

npx @wavespeed/cli run bytedance/seedream-v4.5/edit \
  -i prompt="$PROMPT" \
  -i images="[\"$URL\"]" \
  --json --download "./clean-{index}.{ext}"

Technical Analysis

Both documented workflows invoke npx @wavespeed/cli without specifying an exact package version or verifying package integrity. Depending on the local npm configuration and cache state, npx can retrieve the package from the configured registry and immediately execute its code.

Consequently, the code that runs is not fully determined by the audited skill contents. A compromised package release, package ownership takeover, registry compromise, or malicious registry configuration could cause an altered version of the CLI to execute when a user follows these instructions. The package's CLI implementation and applicable package lifecycle behavior execute with the permissions of the user running npx.

This is a supply-chain weakness rather than evidence that the cur ...[truncated 1597 chars]

Remediation
View remediation

Remediation Suggestions

  1. Pin the CLI to an exact, reviewed version in every command, for example:

    bash
    npx --yes @wavespeed/cli@<audited-exact-version> upload ./generated.png --json
    
  2. Prefer installing the dependency through a committed package.json and lockfile, then execute the locked local binary with npm exec --offline or an equivalent mechanism that does not silently resolve a new release.

  3. Verify the package source, publisher, provenance, and registry integrity metadata before approving a version. Update only through a controlled dependency-review process.

  4. Configure npm to use an explicitly trusted registry and prevent project or user configuration from silently redirecting the scoped package to an untrusted source.

  5. Where compatible with the package, suppress unnecessary installation scripts and test the workflow in an isolated environment before production use.

  6. Run image-processing commands in a least-privilege container or sandbox with:

    • No unrelated credentials in environment variables.
    • Read access limited to required input images.
    • Write access limited to a dedicated output directory.
    • Outbound network access restricted to required WaveSpeed endpoints.
  7. Apply the same pinned version and verification guidance consistently in both SKILL.md and references/brand-hallucination-fix.md.

Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • 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
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
Findings (8)

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The manifest description says the skill can generate product detail pages for "any consumer electronics product" but does not define specific trigger phrases, scope boundaries, or exclusion conditions. In a manifest file, this kind of broad capability description can cause unintended invocation for ordinary requests about product copy or page design.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
85% confidence
Finding

The instruction to use 'standard industry specs' when the real specs are unknown encourages fabrication without requiring disclosure to the user. In an e-commerce product-page skill, this is risky because it can generate materially false claims about battery life, safety ratings, waterproofing, or compatibility, exposing users to deception and downstream legal/compliance issues.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The implementation notes expand the skill from content generation into building and deploying a Next.js site, including deployment guidance. This scope creep can cause an agent to perform actions beyond the manifest's stated purpose, increasing the chance of unintended file changes, framework-specific code generation, or deployment-side effects.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The shell-based upload and image-edit workflow introduces command execution that is not necessary for a pure content-design skill and is not declared in the manifest scope. Allowing CLI execution broadens the attack surface and could lead an agent to run external commands, handle files, and transmit data to third-party services without sufficiently explicit boundaries.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
91% confidence
Finding

The skill instructs use of npx @wavespeed/cli without pinning an exact package version, which causes retrieval and execution of whatever version is current at runtime. If the upstream package is compromised or a breaking release is published, the agent could execute unintended code during image-processing steps.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
91% confidence
Finding

This is a second unpinned npx @wavespeed/cli invocation in the brand-removal workflow. Repeating the pattern increases exposure to supply-chain compromise because each invocation depends on mutable remote package state.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
95% confidence
Finding

The document instructs use of npx @wavespeed/cli without pinning an exact package version, which causes the latest published package to be fetched and executed at runtime. If the package is compromised, typosquatted, or updated with malicious code, the operator could execute attacker-controlled code on their machine or CI environment.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
95% confidence
Finding

This second npx @wavespeed/cli invocation has the same supply-chain risk: it may download and run whatever version is current at execution time. In a skill focused on producing product-page assets, these commands are operational guidance likely to be copied directly by users, which increases the chance of real-world execution of unreviewed code.

Content

No source excerpt is available for this finding.