T08 · Insecure Dependencies
- Location
references/mcp-config-guide.md:38- Finding
Unverified and Unpinned Global npm Dependencies
- Content
View full analysis
# 2. Install globally npm install -g # 3. Configure with binary name "command": [""] ``` ```bash npm install -g playwright-mcp-server ``` ```bash npm install -g context7-mcp ``` ```bash npm install -g mcp-server-supabase ``` ### Technical Analysis The guide recommends searching npm for a current package name and then installing that package globally without specifying a reviewed version, integrity hash, trusted publisher, lockfile, or reproducible installation mechanism. Running `npm view` only displays registry metadata. It does not authenticate the package publisher, inspect package contents, verify lifecycle scripts, or establish that the selected package is the official implementation. The instruction to “search npm for current package name” further exposes users to typosquatting, dependency confusion, abandoned package takeover, and selection of similarly named malicious packages. An npm package may execute lifecycle hooks such as `preinstall`, `install`, and `postinstall` during installation. A malicious or compromised package can therefore run arbitrary commands immediately, before its configured MCP binary is invoked. Installing globally also places executable files in a shared command search path, increasing the package’s reach beyond a single project. This guidance also conflicts with the security statement in `SKILL.md` that the Skill does not install or modify system-wide packages. ### Attack Path 1. An attacker publishes a package with a name resembling one of the suggested MCP packages, or compromises an existing package or publisher account. 2. A user follows the instruction to search npm for the cu ...[truncated 1395 chars]- Remediation
View remediation
