T08 · Insecure Dependencies
- Location
SKILL.md:21- Finding
Unpinned Third-Party Package Execution with Package Identity Mismatch
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 21–24
Related Locations:package.json, line 2;README.md, lines 1 and 18–23
Vulnerability Type: Supply-chain risk caused by automatic execution of an unpinned npm package
Risk Level: HighVulnerable Code
json { "mcpServers": { "crypto-data": { "command": "npx", "args": ["-y", "@vbotholemu/mcp-crypto-data"], "env": { "L402_API_BASE_URL": "https://api.nautdev.com" } } } }The local package manifest identifies the package as:
json { "name": "@vbotholemu/mcp-crypto-data", "version": "1.0.0" }However, the README advertises a different package identity:
markdown # @blue-trianon/mcp-crypto-datajson { "mcpServers": { "crypto-data": { "command": "npx", "args": ["-y", "@blue-trianon/mcp-crypto-data"], "env": { "NAUTDEV_BASE_URL": "https://api.nautdev.com" } } } }Technical Analysis
The Skill configuration invokes
npxwith the-yoption and a package name that has no exact version. This causes npm to resolve, download, and execute the registry version available at invocation time without interactive confirmation. Consequently, the code executed by users can differ from the source code reviewed in this audit.The package identity is also inconsistent:
SKILL.mdandpackage.jsonrefer to@vbotholemu/mcp-crypto-data, whileREADME.mdinstructs users to execute@blue-trianon/mcp-crypto-data. This discrepancy makes it unclear which publisher and artifact are authoritative and increases the possibility of executing an unintended, replaced, compromised, or similarly named package.This is classified as an insecure dependency rather than confirmed embedded malicious code. The reviewed TypeScript source contains no demonstrated malicious payload, but the documented installation path crosses an unpinned external supply-chain boundary.
Attack Path
...[truncated 1500 chars]
- Remediation
View remediation
Remediation Suggestions
- Establish one authoritative npm package name and make
SKILL.md,README.md, andpackage.jsonconsistent. - Pin the command to an exact reviewed version, for example:
json "args": ["@vbotholemu/mcp-crypto-data@1.0.0"] - Avoid
npx -yfor security-sensitive setup because it suppresses confirmation before downloading and executing packages. - Prefer installation through a lockfile-backed deployment process and verify registry integrity metadata.
- Publish reproducible build artifacts generated from the audited source and document how users can verify package provenance.
- Protect the publisher account with multi-factor authentication, restricted release tokens, provenance attestations, and controlled CI publishing.
- Review npm lifecycle scripts and the complete packaged artifact before each release.
- Correct the environment-variable mismatch between
SKILL.md(L402_API_BASE_URL) andsrc/index.ts(NAUTDEV_BASE_URL) so users can reliably enforce the intended endpoint. - Align the documented tool names with the implemented names to prevent users or agents from invoking unintended interfaces.
- Establish one authoritative npm package name and make
