T03 · Remote Payload Retrieval and Execution
- Location
skill.md:94- Finding
Unpinned Remote npm Package Execution
- Content
View full analysis
Vulnerability Details
File Location:
skill.md:94-97
Additional Locations:README.md:19,README.md:38,README.md:48,README.md:67,README.md:235-238
Vulnerability Type: Unpinned remote dependency retrieval and execution
Risk Level: HighComplete Code Snippet
typescript const server = spawn('npx', ['@quantulabs/8004-mcp'], { stdio: ['pipe', 'pipe', 'inherit'], env: { ...process.env, NETWORK_MODE: 'testnet' } });Related installation instructions also execute the package without a version constraint:
bash npx @quantulabs/8004-mcpTechnical Analysis
The Skill instructs the agent to execute
@quantulabs/8004-mcpthroughnpxwithout specifying an exact package version or integrity value. Depending on the local npm cache and npm resolution behavior,npxmay retrieve the currently published package release and execute its code.The effective executable payload can therefore change after this Skill has been reviewed. The project contains only documentation and does not include the MCP server implementation, package lockfile, integrity metadata, or vendored source needed to verify the runtime behavior.
This dependency is particularly sensitive because the documented MCP server is expected to manage cryptocurrency wallets, import private keys, unlock encrypted wallet stores, sign blockchain transactions, broadcast transactions, and communicate with external RPC and IPFS services.
Attack Path
- An attacker compromises the npm publisher account, package repository, build pipeline, or a future package release.
- The attacker publishes a modified version of
@quantulabs/8004-mcp. - A user or agent follows the Skill instructions and invokes
npx @quantulabs/8004-mcp. - npm resolves and downloads the attacker-controlled version because no exact version or integrity constraint is specified.
- The malicious package executes with the permissions of ...[truncated 962 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin the dependency to an exact audited version, such as
@quantulabs/8004-mcp@x.y.z; do not use a floating tag or range. - Install the dependency through a committed lockfile and enforce npm integrity verification.
- Audit or vendor the exact MCP server source used in production.
- Avoid downloading and executing the package dynamically during an agent session.
- Consider installing with lifecycle scripts disabled until package scripts have been reviewed.
- Run the MCP server in a sandbox or dedicated low-privilege account with restricted filesystem access.
- Restrict outbound network access to explicitly required blockchain RPC and storage endpoints.
- Separate read-only registry operations from wallet and signing operations so search functionality does not receive wallet privileges.
- Require explicit user confirmation and transaction previews before signing or broadcasting any transaction.
- Pin the dependency to an exact audited version, such as
