T08 · Insecure Dependencies
- Location
SKILL.md:11- Finding
Unaudited Third-Party npm Package Is Installed Globally and Executed with an API Credential
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 11–15 and 20–23
Vulnerability Type:T08: Insecure Dependencies
Risk Level: MediumVulnerable Code
yaml install: command: npm args: - install - -g - "pipiads-mcp-server@1.0.3"yaml mcpServers: pipiads: command: pipiads-mcp-server env: PIPIADS_API_KEY: "{{PIPIADS_API_KEY}}"Technical Analysis
The skill instructs npm to retrieve
pipiads-mcp-server@1.0.3from an external package registry and install it globally. It then executes the package's binary while exposingPIPIADS_API_KEYto that process.Pinning the package version improves reproducibility but does not verify the artifact's integrity or make its implementation auditable from this project. The project contains no lockfile, cryptographic integrity hash, vendored source, or sandbox policy. Consequently, npm lifecycle scripts and the installed server execute outside the reviewed project content. A compromised package release, registry account, transitive dependency, or package-distribution channel could introduce arbitrary code.
The global
-ginstallation increases the scope of possible changes compared with a project-local, isolated installation. The executed package also legitimately receives the API credential, meaning malicious code inside that dependency would not need to bypass an access-control boundary to read it.Attack Path
- An attacker compromises the published
pipiads-mcp-server@1.0.3artifact, one of its transitive dependencies, its publisher account, or the package-distribution channel. - A user installs the skill, causing npm to download the external package and run any permitted package lifecycle scripts with the installing user's privileges.
- The package is installed globally, allowing malicious installation behavior to affect globally managed tooling or other locations writable by that user.
- The skill launches the installed `pipiads-mcp-ser ...[truncated 1285 chars]
- An attacker compromises the published
- Remediation
View remediation
Remediation Suggestions
- Avoid global installation. Install the dependency in a dedicated project directory, container, or other isolated runtime under a non-privileged account.
- Vendor and review the MCP server source and all transitive dependencies before deployment.
- Use a lockfile and verify registry-provided integrity hashes or signed release artifacts. Pin the full dependency graph rather than only the top-level package version.
- Disable npm lifecycle scripts during installation where compatible, such as by using
--ignore-scripts, and explicitly run only reviewed setup steps. - Restrict the MCP server's filesystem and network access through sandboxing, container controls, or operating-system policy.
- Supply a narrowly scoped API key with account-side spending limits where supported. Rotate the key after suspected exposure.
- Ensure secrets are passed only to the process that requires them and are excluded from logs, diagnostic output, and child processes.
- Monitor package provenance and future releases, and require a fresh security review before changing the pinned version.
