Back to skill

Security audit

Vercel Tool

Security checks for vulnerabilities and agentic risk

Overview

This Vercel helper is mostly purpose-aligned, but it can generate unsafe shell commands from unvalidated input and gives risky token setup guidance.

Review before installing. Use only trusted project/deployment names, do not execute generated commands containing unexpected quotes, semicolons, pipes, backticks, or substitutions, and avoid storing Vercel tokens in shell profiles. Treat rollback as a production-changing action that should require explicit human confirmation.

Vulnerability Patterns
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (2)

T09 · Insecure Skill Coding Practices

Error
Location
scripts/script.sh:8
Finding

Shell Command Injection in Generated Vercel Commands

Content
View full analysis
"; exit 1; } cat << EOF # Check deployment status for: $project # Run this command (replace YOUR_TOKEN with your Vercel token): curl -s "$VERCEL_API/v9/projects/$project" \\ ``` Additional affected command generation includes: ```bash cmd_list() { local limit="${1:-10}" cat << EOF # List recent $limit deployments # Run this command: curl -s "$VERCEL_API/v6/deployments?limit=$limit" \\ ``` ```bash cmd_logs() { local project="${1:-}"; local dep_id="${2:-latest}" [[ -z "$project" ]] && { echo "Usage: logs [deployment-id]"; exit 1; } cat << EOF # Step 1: Get latest deployment ID for $project curl -s "$VERCEL_API/v9/projects/$project" \\ ``` ```bash cmd_domains() { local project="${1:-}" [[ -z "$project" ]] && { echo "Usage: domains "; exit 1; } cat << EOF # Check domain and SSL status for: $project curl -s "$VERCEL_API/v9/projects/$project/domains" \\ ``` ```bash cmd_rollback() { local project="${1:-}"; local dep_id="${2:-}" [[ -z "$project" || -z "$dep_id" ]] && { echo "Usage: rollback "; exit 1; } cat << EOF # Rollback $project to deployment $dep_id curl -s -X POST "$VERCEL_API/v9/projects/$project/promote/$dep_id" \\ -H "Authorization: Bearer YOUR_TOKEN" \\ -H "Content-Type: application/json" ``` ```bash cmd_env() { local project="${1:-}"; local target="${2:-production}" [[ -z "$project" ]] && { echo "Usage: env
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Note
Location
scripts/script.sh:140
Finding

Plaintext Long-Lived Vercel Token Storage Guidance

Content
View full analysis
``` 3. The token is loaded into every subsequent interactive shell and inherited by child processes. 4. A malicious or compromised local process, exposed backup, readable profile file, or diagnostic collection obtains the token. 5. The attacker uses the token against the Vercel API. ### Impact Assessment The attacker obtains the Vercel privileges granted to the exposed token. Depending on the account and token permissions, the attacker may be able to inspec ...[truncated 327 chars]
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • System Prompt LeakageDirect Leakage, Indirect Extraction, Tool-Based Exfiltration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (9)

Direct Prompt Extraction

High
Category
System Prompt Leakage
Confidence
85% confidence
Finding

Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.

Content

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

text

### deploy
Show instructions for triggering a new deployment.
```bash
bash scripts/script.sh deploy <project-name>

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
94% confidence
Finding

The skill advertises and invokes shell-based capabilities via bash scripts/script.sh ... but does not declare any explicit tool scope or permission boundary. That makes the operational surface implicit, increasing the chance that an agent or user will run privileged local commands without clear consent or sandbox expectations.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The description says the skill only generates commands and stores no credentials, but the documented interface directly executes a local shell script that performs deployment-management actions. This mismatch can mislead users into treating the skill as low-risk when it can trigger real API operations such as rollback, log access, and environment inspection.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The trigger phrases are broad and could cause the skill to activate in loosely related contexts such as general discussion of deployments, logs, or environment variables. In an agent setting, over-broad activation can lead to unintended command generation or execution paths for operational infrastructure tasks.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The skill exposes rollback and environment-variable operations without an accompanying warning that these actions can affect production traffic or reveal sensitive configuration. In deployment-management context, lack of safety messaging raises the risk of accidental production changes or disclosure of secrets and internal endpoints.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The rollback helper generates a state-changing production command without an explicit warning, confirmation step, or clear notice that it will promote a prior deployment. In an agent or copy-paste workflow, this increases the risk of accidental service disruption or unintended rollback of a live environment.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The manifest scopes the skill to generating commands for deployment management tasks like status checks, logs, domains, rollbacks, and environment variable auditing. The deploy command goes beyond API command generation and into operational deployment execution guidance using git and the Vercel CLI, which is broader than the stated purpose.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The script advises placing a long-lived Vercel token in a shell profile, which persists the secret in plaintext and exposes it to local compromise, accidental sharing, backups, or misuse by other local processes. Because the token can authorize deployment-management actions, poor secret-handling guidance materially raises credential exposure risk.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
91% confidence
Finding

The top-level comment describes the script as generating Vercel API curl commands and managing local deployment configs. However, later commands emit instructions for editing shell profiles and using git/npm/Vercel CLI rather than generating API curl commands. This is a documentation-to-code intent mismatch, though relatively limited in impact.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.