Back to skill

Security audit

Domain Check

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent Vercel domain helper, but it asks agents to run unpinned Vercel CLI commands and use account tokens for financially sensitive domain actions.

Review before installing or using this skill for real accounts. Prefer a pinned or locally installed Vercel CLI, use narrowly scoped credentials where possible, and require explicit confirmation before any purchase, transfer, move, removal, or project-assignment command.

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

Unpinned Vercel CLI Execution Through npx

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 18–32
Vulnerability Type: Unpinned third-party package execution
Risk Level: Medium

Vulnerable Code

bash
# Buy a domain (interactive — needs pty:true)
npx vercel domains buy mydomain.com

# List your owned domains
npx vercel domains list

# Inspect a domain you own
npx vercel domains inspect mydomain.com

# Add domain to a Vercel project
npx vercel domains add mydomain.com my-project

# Transfer a domain into Vercel
npx vercel domains transfer-in mydomain.com

The same unpinned execution pattern is also documented at lines 43–51, 77–83, and 105.

Technical Analysis

The Skill instructs the agent to execute the vercel npm package through npx without specifying an exact reviewed version or verifying package integrity. If the package is not already available locally, npx can retrieve executable package content from the configured npm registry at runtime. Consequently, the code ultimately executed can differ from the code that was available when the Skill was reviewed.

This creates a software supply-chain exposure. A compromised upstream release, registry account, registry configuration, or package resolution path could cause attacker-controlled package code to execute under the invoking user's account. The concern is amplified because the documented workflow uses Vercel authentication stored locally and includes financially and operationally sensitive commands such as purchasing, moving, removing, and assigning domains.

The audit found no evidence that the Skill itself compromises the package or deliberately redirects resolution to a malicious source. The vulnerability is the unsafe dependency execution pattern and the lack of version and integrity controls.

Attack Path

  1. An agent or user follows the Skill and runs an unpinned command such as npx vercel domains buy mydomain.com.
  2. npx resolves the vercel packag ...[truncated 1581 chars]
Remediation
View remediation

Remediation Suggestions

  1. Pin the Vercel CLI to an exact, reviewed version, for example:

    bash
    npx --yes vercel@X.Y.Z domains list
    

    Replace X.Y.Z with an explicitly approved release rather than a floating tag or version range.

  2. Prefer installing dependencies through a committed lockfile and a controlled installation process, such as npm ci, so package versions and integrity hashes are reproducible.

  3. Configure npm to use the official or an organization-approved registry, and prevent project-level or user-level registry configuration from silently redirecting package resolution to an untrusted source.

  4. Verify package provenance, signatures, integrity metadata, and publisher identity before approving version upgrades.

  5. Execute the CLI with minimum filesystem and account privileges. Use a narrowly scoped Vercel token where supported, and avoid exposing unrelated credentials to the process.

  6. Require explicit user confirmation immediately before purchases, transfers, removals, moves, or other financially or operationally sensitive domain actions. Do not rely solely on the CLI's interactive behavior as an authorization control.

  7. Apply the pinned-version requirement consistently to every npx vercel example in SKILL.md, including the occurrences at lines 43–51, 77–83, and 105.

Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (18)

Rp1

Medium
Category
MCP Rug Pull
Confidence
94% confidence
Finding

Using npx vercel without pinning a specific package version causes execution of whatever version npm resolves at runtime. In an agent skill context, that creates a supply-chain risk and undermines reproducibility, because a compromised or breaking upstream release could execute during sensitive domain-management operations.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
94% confidence
Finding

This invocation relies on an unpinned npx vercel package, so the command may fetch and run unreviewed code at execution time. Because the skill handles purchases and authenticated Vercel actions, compromise of the fetched CLI could expose tokens or trigger unauthorized domain operations.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
94% confidence
Finding

An unversioned npx vercel call allows runtime resolution to the latest package version, which is not deterministic and can introduce supply-chain compromise. In this skill, the command affects owned domains, increasing the consequence of executing a malicious or incompatible release.

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 vercel without version pinning, which permits arbitrary upstream changes to affect execution. Since this command inspects owned domains under authenticated context, a malicious package update could access account metadata or credentials.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
94% confidence
Finding

Running npx vercel unpinned creates a classic dependency-fetch-at-runtime risk. In this case the command modifies project/domain association, so the blast radius includes unauthorized configuration changes if the fetched package is malicious.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
94% confidence
Finding

The interactive purchase example still uses unpinned npx vercel, so even though the purchase itself asks for confirmation, the code being executed is not fixed or audited. In a transactional flow, this raises the risk of credential theft or altered purchase behavior from a compromised upstream package.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
94% confidence
Finding

Another unpinned npx vercel example means the agent may execute whatever package npm currently serves rather than a reviewed artifact. Because the skill is explicitly designed to perform purchases, this context makes the supply-chain issue more dangerous than a read-only utility would be.

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 · SKILL.md (reported line 75)May include surrounding context.

md
TEAM_PARAM="${TEAM:+?teamId=$TEAM}"

# Check price/availability
curl -s "https://api.vercel.com/v1/registrar/domains/example.com/price${TEAM_PARAM}" \
  -H "Authorization: Bearer $VERCEL_TOKEN"
# Returns: { "years": 1, "purchasePrice": 11.25, "renewalPrice": 11.25, "transferPrice": 11.25 }
# purchasePrice: null = taken, number = available

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 · SKILL.md (reported line 75)May include surrounding context.

md
TEAM_PARAM="${TEAM:+?teamId=$TEAM}"

# Check price/availability
curl -s "https://api.vercel.com/v1/registrar/domains/example.com/price${TEAM_PARAM}" \
  -H "Authorization: Bearer $VERCEL_TOKEN"
# Returns: { "years": 1, "purchasePrice": 11.25, "renewalPrice": 11.25, "transferPrice": 11.25 }
# purchasePrice: null = taken, number = available

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 · SKILL.md (reported line 81)May include surrounding context.

md
TEAM_PARAM="${TEAM:+?teamId=$TEAM}"

# Check price/availability
curl -s "https://api.vercel.com/v1/registrar/domains/example.com/price${TEAM_PARAM}" \
  -H "Authorization: Bearer $VERCEL_TOKEN"
# Returns: { "years": 1, "purchasePrice": 11.25, "renewalPrice": 11.25, "transferPrice": 11.25 }
# purchasePrice: null = taken, number = available

Rp1

Medium
Category
MCP Rug Pull
Confidence
93% confidence
Finding

The command table includes an unpinned npx vercel invocation, preserving the same supply-chain execution risk throughout the skill. Even listing domains occurs under authenticated context and may expose account data if a malicious package is fetched.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
93% confidence
Finding

This documented npx vercel usage is unpinned, so agents or users following it may execute unreviewed code. Since the command targets owned-domain information, compromise could leak sensitive account metadata or tokens.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
94% confidence
Finding

The purchase command in the table uses unpinned npx vercel, combining runtime package-fetch risk with billing-sensitive actions. If the upstream package were compromised, the attacker could abuse authenticated domain purchase flows or exfiltrate secrets.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
94% confidence
Finding

This add-domain command is documented with unpinned npx vercel, making execution depend on an uncontrolled external package state. Because the action changes project configuration, a compromised CLI could silently alter or misroute domain settings.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
94% confidence
Finding

The move-domain example uses an unpinned CLI fetched at runtime, which is risky in any authenticated administrative workflow. Here, the potential impact includes unauthorized transfer of domains between teams if a malicious package executes.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
94% confidence
Finding

This transfer-in example again depends on an unpinned npx vercel, exposing the skill to upstream package tampering or unexpected behavioral changes. Given the domain transfer context, the operational risk is elevated beyond a generic helper command.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
94% confidence
Finding

The remove-domain command is another instance of unpinned runtime package execution. A malicious or broken fetched CLI could delete domain associations or misuse credentials while operating with the user's Vercel access.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding

The authentication guidance references npx vercel login without pinning, which is especially sensitive because login flows handle credentials and tokens. Executing an unpinned CLI during auth materially increases the chance of secret theft from a supply-chain compromise.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.