T08 · Insecure Dependencies
- Location
SKILL.md:22- Finding
Unpinned npm Package Downloaded and Executed via npx
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 5, 22-24, 31-43, and 48-50
Vulnerability Type: Unpinned third-party dependency execution
Risk Level: MediumVulnerable Code
The package installation metadata does not specify an exact version:
yaml metadata: {"clawdbot":{"emoji":"🎨","requires":{"bins":["npx"]},"install":[{"id":"node","kind":"node","package":"assimilate-mcp","bins":["assimilate-mcp"],"label":"Install assimilate-mcp"}]}}The documented MCPorter setup downloads and executes the package without a version pin:
bash mcporter config add assimilate --command npx --args '["-y", "assimilate-mcp"]' mcporter list assimilateThe Claude Desktop configuration has the same behavior:
json { "mcpServers": { "assimilate": { "command": "npx", "args": ["-y", "assimilate-mcp"] } } }The Claude Code setup also executes the unpinned package:
bash claude mcp add assimilate -- npx -y assimilate-mcpTechnical Analysis
The setup instructions invoke
npx -y assimilate-mcpwithout an exact package version or integrity constraint. Consequently, npm resolves the package version available under the relevant registry and distribution tag at installation or execution time. The-yoption suppresses the normal confirmation prompt.The audited artifact contains only documentation and metadata; it does not include the npm package source, a lockfile, or integrity hashes. Therefore, the code ultimately executed by these commands is outside the reviewed artifact and can change independently after this skill has been audited.
This creates a supply-chain vulnerability: compromise of the package publisher account, npm package, release process, transitive dependencies, or registry resolution could cause users to execute attacker-controlled code. No evidence in the audited files proves that the current package is malicious; the findin ...[truncated 1645 chars]
- Remediation
View remediation
Remediation Suggestions
-
Pin the dependency to a specific, reviewed version in every installation and execution example, such as:
bash npx -y assimilate-mcp@1.0.0Apply the same version pin to the installation metadata, MCPorter arguments, Claude Desktop configuration, and Claude Code command.
-
Prefer installing dependencies through a committed lockfile rather than dynamically resolving the latest registry release at runtime.
-
Verify npm integrity metadata and retain approved package hashes or provenance information as part of the release process.
-
Remove
-ywhere practical so unexpected downloads are not automatically approved. -
Review the package source, lifecycle scripts, bundled files, and transitive dependency tree before approving each upgrade.
-
Execute the MCP server under a dedicated, least-privileged account with restricted filesystem access, limited environment variables, and network access only to the required Assimilate endpoint.
-
Avoid exposing authorization keys through broadly inherited process environments. Use a scoped secret mechanism and rotate the key if package compromise is suspected.
-
Establish an explicit dependency-update process in which version changes are reviewed, tested, and security-scanned before deployment.
-
