T08 · Insecure Dependencies
- Location
SKILL.md:42- Finding
Unpinned Third-Party Package Installation and Execution
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 42-89; additional occurrences at lines 195 and 211
Vulnerability Type: Supply-chain risk caused by unpinned dependencies
Risk Level: MediumVulnerable Code
bash npm i -g chrome-devtools-mcpbash npx -y chrome-devtools-mcp@latestjson { "mcpServers": { "chrome-devtools": { "command": "npx", "args": ["-y", "chrome-devtools-mcp@latest", "--no-usage-statistics"] } } }json { "mcpServers": { "chrome-devtools": { "command": "npx", "args": ["-y", "chrome-devtools-mcp@latest", "--slim", "--headless", "--no-usage-statistics"] } } }bash /plugin marketplace add ChromeDevTools/chrome-devtools-mcp /plugin install chrome-devtools-mcpyaml mcp: servers: chrome-devtools: command: npx args: ["-y", "chrome-devtools-mcp@latest", "--no-usage-statistics"]Additional unpinned executions include:
bash npx @puppeteer/browsers install chrome@stable npx -y chrome-devtools-mcp@latest --headlessTechnical Analysis
The documented installation and configuration procedures execute third-party packages without pinning them to reviewed, immutable versions. The global npm installation implicitly resolves the current registry version, while several configurations explicitly request
@latest. The plugin installation and@puppeteer/browserscommand are similarly not tied to a reviewed version.The
npx -yoption automatically accepts installation without an interactive confirmation step. Consequently, the code executed on a future invocation may differ from the code that existed when this skill was audited. Package lifecycle scripts may also execute during installation.This creates a supply-chain trust boundary in which compromise of the package, npm account, registry resolution, plugin marke ...[truncated 1791 chars]
- Remediation
View remediation
Remediation Suggestions
-
Replace
@latest,@stable, and implicit latest-version resolution with exact, reviewed versions, for example:bash npx --yes chrome-devtools-mcp@<reviewed-exact-version> --no-usage-statistics -
Pin transitive dependencies with a committed lockfile where installation occurs through a managed project rather than ad hoc global execution.
-
Verify downloaded packages using registry integrity metadata, checksums, signatures, or provenance attestations. Store expected verification data in a reviewed configuration.
-
Avoid global package installation. Install dependencies in an isolated project or controlled container using an unprivileged account.
-
Avoid automatic mutable dependency installation during MCP startup. Preinstall and review a fixed artifact, then configure the MCP server to invoke that local artifact.
-
Configure an approved registry or internal artifact mirror and enforce package allowlists.
-
Disable or strictly control npm lifecycle scripts where compatible with the package.
-
Pin plugin marketplace sources and plugin versions to reviewed revisions or immutable release artifacts.
-
Run the MCP server and Chrome in a sandbox with a dedicated browser profile, minimal filesystem access, restricted environment variables, and no unnecessary credentials.
-
Establish a controlled update process in which new versions are reviewed, scanned, tested, and explicitly approved before changing the pin.
-
