T08 · Insecure Dependencies
- Location
SKILL.md:22- Finding
Unpinned npm Package Is Downloaded and Executed Automatically
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:22-23
Vulnerability Type: Unpinned remote dependency execution
Risk Level: HighVulnerable Code
json "command": "npx", "args": ["-y", "@vbotholemu/mcp-aviation-weather"]Technical Analysis
The documented MCP configuration invokes
npxwith the-yoption and a package name that has no exact version constraint. Consequently, npm can download and execute the registry version resolved at invocation time without requesting user confirmation.The effective executable is the package's published
dist/index.js. That artifact is not included in the audited project, so its equivalence to the reviewedsrc/index.tsimplementation cannot be established. The package identity is also inconsistent:SKILL.mdandpackage.jsonreference@vbotholemu/mcp-aviation-weather, whileREADME.mdinstructs users to execute@blue-trianon/mcp-aviation-weather. This ambiguity increases the possibility of installing an unintended or unverified package.This creates a supply-chain trust boundary in which code can change after the skill has been reviewed. A malicious package release, registry account compromise, package-name mistake, or ownership transfer could cause arbitrary attacker-controlled JavaScript to run when the MCP server starts.
Attack Path
- An attacker compromises the referenced npm package, its publisher account, or another package selected because of the documented identity mismatch.
- The attacker publishes a malicious package version whose executable or installation lifecycle behavior contains an arbitrary payload.
- A user applies the configuration from
SKILL.md. - The MCP client executes
npx -y @vbotholemu/mcp-aviation-weather. npxresolves and downloads the current registry package without interactive approval.- npm or
npxruns the package-controlled code with the privileges and environment of the MCP host process.
...[truncated 590 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin the invoked package to an audited exact version, for example:
json "command": "npx", "args": ["-y", "@vbotholemu/mcp-aviation-weather@1.0.0"] - Reconcile the package name across
SKILL.md,README.md, andpackage.jsonso all installation instructions identify the same verified publisher and package. - Include a lockfile and use deterministic installation procedures such as
npm ciwhere the deployment model permits it. - Verify npm provenance, publisher identity, package integrity hashes, and signatures before deployment.
- Ensure the reviewed build output is reproducible and confirm that the published
dist/index.jsmatches the audited source. - Prefer installing and approving the dependency separately instead of allowing the MCP client to retrieve executable code automatically at startup.
- Run the MCP server in a restricted account or sandbox with minimal filesystem, environment-variable, process-execution, and network permissions.
- Disable or tightly control npm lifecycle scripts during trusted installation workflows where they are unnecessary.
- Pin the invoked package to an audited exact version, for example:
