T08 · Insecure Dependencies
- Location
SKILL.md:25- Finding
Unpinned Package Execution Through npx
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 25–26
Vulnerability Type: Supply-chain risk caused by automatic execution of an unpinned package
Risk Level: MediumVulnerable Code
json "command": "npx", "args": ["-y", "@vbotholemu/mcp-llm-inference"],A related configuration in
README.md, lines 22–23, references a different package identity:json "command": "npx", "args": ["-y", "@blue-trianon/mcp-llm-inference"],Technical Analysis
The documented configuration invokes
npxwith-y, which suppresses confirmation and downloads and executes the package selected by the registry. Because no exact package version is specified, later invocations can execute a release that was not part of this audit.The package identity is also inconsistent:
SKILL.mdandpackage.jsonidentify@vbotholemu/mcp-llm-inference, whileREADME.mdinstructs users to execute@blue-trianon/mcp-llm-inference. This ambiguity increases the chance that users execute an unintended, unreviewed, abandoned, or compromised package.The project's runtime dependencies also use caret ranges rather than exact versions, and no lockfile was present in the audited artifact. Those conditions further weaken build reproducibility, although the directly exploitable configuration is the unpinned
npx -yinvocation.Attack Path
- An attacker compromises the publisher account or registry package referenced by the configuration, or gains control of the conflicting package identity.
- The attacker publishes a malicious release under that package name.
- A user adds the documented MCP configuration or restarts an environment that resolves the package again.
npx -yretrieves the registry-selected release without an interactive confirmation.- Node.js executes the downloaded package with the privileges and environment of the MCP host process.
- Malicious package code can then access resources ...[truncated 675 chars]
- Remediation
View remediation
Remediation Suggestions
-
Use one verified package identity consistently across
SKILL.md,README.md, andpackage.json. -
Pin the exact audited release in all execution examples, for example:
json "command": "npx", "args": ["-y", "@vbotholemu/mcp-llm-inference@1.0.0"] -
Prefer installing from a lockfile and invoking the locally installed executable instead of downloading code when the MCP server starts.
-
Commit a package-manager lockfile and use reproducible installation commands such as
npm ci. -
Pin security-sensitive dependencies to reviewed versions and use automated dependency scanning and controlled update review.
-
Verify publisher ownership, package provenance, release signatures or attestations, and registry integrity before deployment.
-
Run the MCP server with least privilege, a restricted environment, limited filesystem access, and constrained outbound networking to reduce the impact of a supply-chain compromise.
-
