T08 · Insecure Dependencies
- Location
SKILL.md:15- Finding
Unpinned Remote MCP Dependency Can Access Ethereum Private Keys and Payment Authority
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:15,SKILL.md:26,SKILL.md:31-39, andSKILL.md:61-62
Vulnerability Type: Unpinned third-party dependency executed from a mutable remote source
Risk Level: HighVulnerable code snippets:
yaml install: - kind: node package: "github:bluepagesdoteth/bluepages-mcp"markdown Requires the Bluepages MCP server: `npx -y github:bluepagesdoteth/bluepages-mcp` or direct API calls (see below). The MCP server is the recommended way to use Bluepages.markdown Requires one of these env vars: - **`BLUEPAGES_API_KEY`** (recommended) — 20% cheaper, 2x rate limits. - **`PRIVATE_KEY`** — Ethereum private key for x402 pay-per-request (USDC on Base). > **Security note**: Never use a main wallet key. Use a dedicated, funded-only-as-needed agent wallet if providing `PRIVATE_KEY`. **With a private key**, you can either pay per request via x402 or purchase a `BLUEPAGES_API_KEY` using the `get_api_key` and `purchase_credits` MCP tools.markdown | `get_api_key` | free | Get/create API key via wallet signature | | `purchase_credits` | $5–$600 USDC | Buy credits via x402 (PRIVATE_KEY only) |Technical Analysis
The Skill instructs users to execute an MCP server directly from a GitHub repository using
npx -y. The dependency is not pinned to an immutable commit, verified release, or integrity digest. Consequently, the code executed during a future installation can differ from the code that existed when the Skill was reviewed.The same MCP process may receive the
PRIVATE_KEYenvironment variable. An Ethereum private key is not merely an authentication token: it grants cryptographic signing authority over the associated wallet. The documented MCP functionality also includes x402 payments and credit purchases of up to $600 USDC. A compromised upstream repository, maintainer acc ...[truncated 2239 chars]- Remediation
View remediation
Remediation Suggestions
- Pin the MCP dependency to an audited immutable commit hash or a specific signed release rather than a mutable GitHub repository reference.
- Publish and verify a cryptographic integrity digest for the package and lock all transitive dependencies with an appropriate lockfile.
- Prefer
BLUEPAGES_API_KEYover exposing an Ethereum private key to the MCP process. - If blockchain signing is required, replace direct
PRIVATE_KEYaccess with an isolated signer or wallet service that enforces:- Base-network-only transactions.
- Explicit destination and contract allowlists.
- Asset restrictions.
- Per-transaction and cumulative spending limits.
- Transaction simulation and validation.
- Explicit user approval for credit purchases and other value transfers.
- Run the MCP server in a sandbox with minimal filesystem, environment, network, and operating-system permissions. Pass only the credential required for the current operation.
- Use a dedicated wallet with minimal funds and no valuable approvals, periodically rotate its credentials, and revoke unnecessary token allowances.
- Audit the pinned MCP source and its dependency tree before deployment, and establish monitoring for upstream ownership, release, and dependency changes.
