Back to skill

Security audit

scaffold-nuxt-cloudflare-app

Security checks for vulnerabilities and agentic risk

Overview

This skill is a coherent Nuxt/Cloudflare scaffolding guide, but users should treat its package installs and Cloudflare commands as real code execution and account actions.

Install only if you want an agent to create a new Nuxt/Cloudflare project and potentially run package-manager and Wrangler commands. Use a clean workspace or container, validate the app name as a simple lowercase identifier before running commands, review generated files and lockfiles, and confirm before creating Cloudflare resources or deploying with credentials present.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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
Findings (2)

T08 · Insecure Dependencies

Warning
Location
SKILL.md:37
Finding

Unpinned Dependencies Permit Unreviewed Supply-Chain Code Execution

Content
View full analysis
cd ``` ``` From `SKILL.md:80-83`: ```markdown ```bash # swap @nuxt/ui for @antdv-next/nuxt antdv-next @antdv-next/icons if that's the chosen UI kit pnpm add @nuxt/ui @nuxt/image @nuxtjs/seo @nuxthub/core @vueuse/nuxt pnpm add -D @nuxt/eslint @nuxt/test-utils @vitejs/plugin-vue @vue/test-utils vitest happy-dom ``` ``` From `SKILL.md:113-115`: ```markdown [antdv-next](https://github.com/antdv-next/antdv-next) is Ant Design's Vue 3 component library, with an **official Nuxt module**, `@antdv-next/nuxt` (requires Nuxt ≥ 4.0.0, Vue ≥ 3.5.0): 1. Install: `npx nuxi module add @antdv-next/nuxt` (or manually: `pnpm add -D @antdv-next/nuxt antdv-next @antdv-next/icons` — the upstream docs list all three as devDependencies even though components render at runtime; Nuxt modules commonly work this way). ``` From `references/package.example.json:1-4` and `references/package.example.json:20-22`: ```jsonc // Version numbers below are illustrative only (pins from when this skill was // authored) — always let `pnpm add`/`nuxi init` resolve the actual latest // release rather than typing these ranges in by hand. Don't assume Nuxt is // still on major 4 by the time this skill i ...[truncated 2636 chars]
Remediation
View remediation
init -- pnpm add --save-exact nuxt@ ``` 2. Pin the `packageManager` field to an exact, approved pnpm version instead of deriving it dynamically from an arbitrary local installation. 3. Generate and commit `pnpm-lock.yaml`, then enforce immutable installation in CI: ```bash pnpm install --frozen-lockfile ``` 4. Use `--ignore-scripts` during dependency installation where lifecycle scripts are unnecessary. 5. Permit build scripts only for packages whose scripts and provenance have been reviewed. Keep the native build allowlist as narrow as possible. 6. Enable package-registry provenance verification, integrity checking, dependency scanning, and automated review of lockfile changes. 7. Route dependency upgrades through a controlled update process rather than always selecting `latest`. 8. Run scaffolding and installation in a restricted container or sandbox without production credentials. ]]>

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:37
Finding

Unvalidated App Name Can Become a Shell Command-Injection Vector

Content
View full analysis
cd ``` ``` From `SKILL.md:167-171`: ```markdown Copy `wrangler.example.jsonc`, then: 1. Set `name` to the Cloudflare Workers project name (must be globally unique on the account). 2. Set `compatibility_date` to today; keep `compatibility_flags: ["nodejs_compat", "nodejs_als"]` — both are required by NuxtHub's runtime bindings. 3. If a DB is in scope, keep the `d1_databases` block but leave `database_id` blank/placeholder until the DB is actually provisioned (`wrangler d1 create ` will produce the real ID — never fabricate one). ``` From `references/nuxthub-deployment.md:42-48`: ```markdown ## Creating the actual Cloudflare resources ```bash npx wrangler d1 create -db # → database_id npx wrangler kv namespace create KV # → id, if KV is in scope npx wrangler kv namespace create CACHE # → id, if the cache feature is in scope npx wrangler r2 bucket create -bucket # → bucket name (no id needed), if Blob is in scope ``` ``` ### Technical Analysis The app name originates from user input and is subsequently interpolated into shell-command examples. The Skill does not define a validation rule, normalization procedure, shell-escaping requirement, or argument-array execution requirement. If an Agent performs di ...[truncated 2110 chars]
Remediation
View remediation
', 'init', validatedAppName], { shell: false }) ``` 5. Change directories through a filesystem/process API using a validated resolved path rather than executing `cd `. 6. Apply the same validation to derived resource names such as `${appName}-db`, `${appName}-preview`, and `${appName}-bucket`. 7. Display the exact validated resource names and request confirmation before running authenticated Cloudflare creation or deployment operations. 8. Run scaffolding with least-privilege credentials and avoid exposing production Cloudflare credentials during untrusted project generation. ]]>
Vulnerability Patterns
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (30)

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

The declared description is about generating a new Nuxt full-stack project configured for Cloudflare Workers, NuxtHub bindings, package/tooling choices, and optional modules. The supplied code chunk does not scaffold an app or perform project setup; it is a static example configuration for @nuxt/content collections and SEO metadata schemas. While Nuxt Content is mentioned in the declared purpose as an optional feature, this chunk’s actual purpose is much narrower and materially different from the claimed scaffold/setup behavior.

Content

No source excerpt is available for this finding.

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
80% 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.

Content

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

md
## 1. Clarify scope before scaffolding

Don't ask the user about things you can infer from their request. Only ask (via AskUserQuestion, once, batched) what genuinely isn't decidable from context:

- **App name + domain** — needed for `site.name`/`site.url` in nuxt.config and the `wrangler.jsonc` project name.
- **Which UI kit?** → **Nuxt UI** (Tailwind-based, official `@nuxt/ui` module, this skill's default) or **Antdv Next** (Ant Design's Vue 3 component system, official `@antdv-next/nuxt` module). See §4 for scaffold-time wiring. Default to Nuxt UI unless the user names Ant Design/Antdv or an existing design system that maps to it. The two are mutually exclusive — never install both.

Skill Enumeration

Medium
Category
Agent Snooping
Confidence
80% confidence
Finding

Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

Content

Scanner excerpt · references/nuxthub-deployment.md (reported line 3)May include surrounding context.

md
# NuxtHub v0.10.x — deployment specifics

Adapted from [onmax/nuxt-skills](https://github.com/onmax/nuxt-skills)'s `nuxthub` skill ([SKILL.md](https://github.com/onmax/nuxt-skills/blob/main/skills/nuxthub/SKILL.md), [references/providers.md](https://github.com/onmax/nuxt-skills/blob/main/skills/nuxthub/references/providers.md), [references/wrangler-templates.md](https://github.com/onmax/nuxt-skills/blob/main/skills/nuxthub/references/wrangler-templates.md)) — check that source for anything not covered here or for newer NuxtHub releases.

## `npx nuxthub deploy` is deprecated

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.

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.

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.

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.

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.

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.

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.

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.