T08 · Insecure Dependencies
- Location
- SKILL.md:18
- Finding
- Mutable npm Packages Are Executed Through Unpinned npx Commands<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:18-28`, `install.sh:69-75`, `references/onboarding.md:188-192` **Vulnerability Type**: Supply-chain exposure through mutable dependencies **Risk Level**: Medium ### Vulnerable Code From `SKILL.md`: ```markdown ### 1. Helius MCP Server **CRITICAL**: Check if Helius MCP tools are available (e.g., `getBalance`, `getAssetsByOwner`). If NOT available, **STOP** and tell the user: `claude mcp add helius npx helius-mcp@latest` then restart Claude. ### 2. API Key If any MCP tool returns "API key not configured": **Path A — Existing key:** Use `setHeliusApiKey` with their key from https://dashboard.helius.dev. **Path B — Agentic signup:** `generateKeypair` → user funds wallet with **~0.001 SOL** for fees + **USDC** (USDC mint: `EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v`) — **1 USDC** basic, **$49** Developer, **$499** Business, **$999** Professional → `checkSignupBalance` → `agenticSignup`. **Do NOT skip steps** — on-chain payment required. **Path C — CLI:** `npx helius-cli@latest keygen` → fund wallet → `npx helius-cli@latest signup` ``` From `install.sh`: ```bash echo "Next steps:" echo " 1. Install the Helius MCP server (if not already):" echo " claude mcp add helius npx helius-mcp@latest" echo "" echo " 2. Set your API key (if not already):" echo " export HELIUS_API_KEY=your-api-key" echo " Or use the setHeliusApiKey MCP tool in Claude Code" ``` From `references/onboarding.md`: ```bash claude mcp add helius npx helius-mcp@latest ``` ### Technical Analysis The Skill instructs users to execute `helius-mcp@latest` and `helius-cli@latest` directly through `npx`. The `latest` distribution tag is mutable, so the code executed in the future is not necessarily the code that existed when this Skill was audited. No lockfile, exact package version, integrity hash, or package-content verification is supplied. This creates a supply-chain trust boundary around npm, the package publisher ...[truncated 1613 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Replace `@latest` with an exact, reviewed version: ```bash claude mcp add helius npx --yes helius-mcp@X.Y.Z npx --yes helius-cli@X.Y.Z keygen ``` 2. Document the expected npm package owner, repository, and release provenance. 3. Use a lockfile or locally installed dependency rather than downloading executable code at invocation time. 4. Verify package integrity through a reviewed package hash, signed provenance, or trusted release process. 5. Review dependency updates before changing the pinned version. 6. Run the MCP server with least privilege and isolate it from unrelated secrets. 7. Keep funded signup wallets limited to the minimum required balance. 8. Restrict permissions on keypair and shared configuration files. ]]>
