T08 · Insecure Dependencies
Error
- Location
- SKILL.md:464
- Finding
- Unpinned Third-Party Packages Execute with Wallet Signing Authority## Vulnerability Details **File Location**: `SKILL.md`, lines 464-470 and 690-699 **Vulnerability Type**: Supply-chain exposure through unpinned executable dependencies **Risk Level**: High ### Vulnerable Code ```bash # SDK npm install pay-lobster viem # CLI npm install -g @paylobster/cli # Self-hosted MCP server npm install @paylobster/mcp-server ``` ```json { "mcpServers": { "paylobster": { "command": "npx", "args": ["@paylobster/mcp-server"], "env": { "PAYLOBSTER_PRIVATE_KEY": "0x...", "PAYLOBSTER_NETWORK": "mainnet" } } } } ``` ### Technical Analysis The installation and execution commands do not pin immutable package versions. In particular, `npx` can resolve and execute a package version from the npm registry at runtime. The document does not require a lockfile, package-integrity verification, trusted artifact hash, or source review. This becomes security-critical because the MCP server is explicitly launched with `PAYLOBSTER_PRIVATE_KEY` in its environment. Any code executed by that package runs with access to the process environment and can read the wallet key. It can also communicate over the network, invoke signing operations, or submit transactions. A package registry compromise, compromised maintainer account, malicious update, or dependency-level supply-chain compromise could therefore turn the documented installation path into wallet compromise. No evidence establishes that the named packages are currently malicious. The vulnerability is the unsafe trust and execution model applied to mutable third-party dependencies that receive sensitive wallet authority. ### Attack Path 1. An attacker compromises the npm package, one of its transitive dependencies, or a maintainer publishing account. 2. The attacker publishes a malicious version under the existing package name. 3. A user follows the documented unpinned `npm install` ...[truncated 1304 chars]
- Remediation
- ## Remediation Suggestions 1. Pin exact package versions in all installation and execution examples, including every `npx` invocation: ```bash npm install pay-lobster@4.6.0 viem@EXACT_VERSION npm install -g @paylobster/cli@4.6.0 npm install @paylobster/mcp-server@1.5.0 npx --yes @paylobster/mcp-server@1.5.0 ``` 2. Commit and enforce a lockfile with integrity metadata. Use `npm ci` rather than mutable production installation workflows. 3. Verify package provenance, signatures, registry origin, and integrity hashes before execution. 4. Review the package and its transitive dependencies before granting access to wallet credentials. 5. Do not provide a raw private key to the MCP process. Prefer a hardware wallet, TEE-backed signer, remote signer, or narrowly scoped signing service. 6. Use a dedicated low-value wallet with explicit per-transaction and daily spending limits. 7. Restrict the process's filesystem and network access through sandboxing or container isolation. 8. Monitor package updates and on-chain activity, and provide an immediate key-rotation and permission-revocation procedure.
