Back to skill

Security audit

Stack Scaffold

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent project scaffold, but it requests live Firebase admin credentials it does not need and runs unpinned package commands, so it should be reviewed before use.

Install only if you are comfortable running live npm and npx scaffolding commands. Do not provide Firebase admin private keys or other production secrets during scaffold creation; add credentials later in a restricted environment and consider pinning package and CLI versions before running generated scripts.

Vulnerability Patterns
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • 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
Findings (2)

T08 · Insecure Dependencies

Warning
Location
SKILL.md:49
Finding

Unpinned Executable Dependencies Create a Mutable Software Supply Chain

Content
View full analysis
--typescript --tailwind --eslint --app --src-dir --import-alias "@/*"` to create the Next.js project with App Router. 2. `cd` into the project directory. 3. Ensure `.gitignore` exists and includes at minimum: `.env`, `.env.local`, `.env*.local`, `node_modules/`, `.next/`. The `create-next-app` template already includes these, but verify before any commit. 4. Initialize git: `git init && git add -A && git commit -m "chore: initial Next.js scaffold"`. ## Dependencies Install the following in a single command: ```bash npm install @supabase/supabase-js @supabase/ssr firebase firebase-admin zod zustand next-themes npm install -D @types/node vitest @vitejs/plugin-react playwright @playwright/test prettier eslint-config-prettier ``` ``` The generated package script also invokes an unpinned CLI: ```json { "types:supabase": "npx supabase gen types typescript --local > src/lib/supabase/types.ts" } ``` ### Technical Analysis The skill directs the agent to execute `create-next-app@latest`, install multiple packages without explicit versions, and later execute `npx supabase` without pinning or explicitly installing a reviewed CLI release. These commands resolve executable content dynamically from the npm registry. As a result, the code executed during one invocation may differ from the code reviewed during the audit. Package installation can also run lifecycle scripts with the privileges and environment of the invoking process. The listed package names are consistent with the skill's declared scaffolding purpose, and there is no evidence that any package is currently malicious. The vulnerability is the mutable, unreviewed dependency resolution process rather than a confirmed malicio ...[truncated 1425 chars]
Remediation
View remediation
... ``` 2. Pin all direct dependencies and development dependencies to exact reviewed versions rather than relying on current registry resolution. 3. Generate and commit `package-lock.json`, then use `npm ci` for reproducible installation. 4. Explicitly install a pinned Supabase CLI version and invoke the local binary instead of allowing `npx supabase` to resolve an arbitrary current version. 5. Review transitive dependency changes before updating the lockfile. 6. Use automated dependency scanning, provenance verification, and package integrity checks. 7. Disable lifecycle scripts with `--ignore-scripts` where compatible, or explicitly review packages that require installation scripts. 8. Run dependency installation in a restricted environment with sanitized credentials, minimum filesystem access, and constrained network access. ]]>

T05 · Unauthorized Access and Privilege Escalation

Warning
Location
claw.json:14
Finding

Scaffolding Skill Unnecessarily Requires Live Firebase Administrative Credentials

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • 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 (6)

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The instruction says the skill should run 'when the user asks to create a new project,' which overlaps with very common everyday requests and does not define narrower trigger phrases or exclusion conditions. This ambiguity could cause unintended invocation for generic project-creation discussions rather than explicit requests to use this scaffold.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
94% confidence
Finding

The skill instructs use of npx create-next-app@latest, which pulls and executes remote code at runtime without a reproducible pinned package version. That creates a supply-chain risk: scaffolded output can change unexpectedly over time, and a compromised or breaking upstream release would be executed in the user's environment.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
93% confidence
Finding

The types:supabase script invokes npx supabase without pinning an exact CLI version, so future runs may execute different code than originally reviewed. In a build or developer workflow, this weakens reproducibility and exposes users to upstream supply-chain or behavior-change risk.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
79% confidence
Finding

Line L009 states the skill 'never reads or modifies existing .env, .env.local, or credential files.' However, L275 explicitly instructs creating .env.local by copying .env.example, which is an action on a credential-bearing environment file. This is a direct contradiction between the skill's documentation and its prescribed behavior.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

The vercel.json example fixes the deployment region to gru1, which imposes a locale/region choice in natural-language/config guidance without offering opt-in or explaining why that region is required. This may violate language/locale policy expectations when the skill is presented as a general-purpose scaffold.

Content

No source excerpt is available for this finding.

Vague Triggers

Low
Category
Not specified by scanner
Confidence
82% confidence
Finding

This manifest describes what the skill does but provides no explicit invocation phrases, scope limits, or negative examples clarifying when it should or should not activate. In manifest files, that absence can make activation behavior ambiguous and increase the chance of unintended invocation.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.