T08 · Insecure Dependencies
- Location
bin/start-mcp.sh:3- Finding
Unpinned npm Package Is Downloaded and Executed Without Integrity Verification
- Content
View full analysis
Vulnerability Details
File Location:
bin/start-mcp.sh, line 3; also documented inSKILL.md, line 24
Vulnerability Type: Insecure third-party dependency execution
Risk Level: HighVulnerable Code
bin/start-mcp.sh:1-3:bash #!/usr/bin/env bash # Starts the Human Pages MCP server via npx exec npx -y humanpagesRelated setup instruction in
SKILL.md:24:text mcporter config add humanpages --command "npx -y humanpages"Technical Analysis
The skill invokes
npx -y humanpageswithout specifying an exact package version or validating a cryptographic integrity hash. If the package is not already available in a suitable local cache,npxcan retrieve it from the configured npm registry and immediately execute it. The-yoption suppresses the installation confirmation.As a result, the files reviewed in this project do not fully determine the code that runs. A future package release, compromised publisher account, malicious registry response, dependency compromise, or poisoned npm configuration could cause different code to execute without any modification to this repository.
This is primarily an insecure dependency and supply-chain issue. It also creates a remote payload retrieval and execution channel because mutable external code is fetched at invocation time.
Attack Path
- An attacker compromises the
humanpagesnpm publisher, its release process, a transitive dependency, or a registry/network path trusted by the local npm configuration. - The attacker publishes or serves a malicious version of the package.
- A user invokes
bin/start-mcp.shor follows the command documented inSKILL.md. npx -y humanpagesobtains the remotely supplied package without asking the user to approve the installation.- npm lifecycle code or the package entry point executes with the privileges and environment of the invoking process.
- The malicious code can access resources available to that process, potentially in ...[truncated 983 chars]
- An attacker compromises the
- Remediation
View remediation
Remediation Suggestions
-
Replace the floating package reference with an exact, reviewed version, for example:
bash exec npx -y --package humanpages@X.Y.Z humanpagesConfirm the correct executable syntax for the selected package before deployment.
-
Prefer installing dependencies during a controlled build or deployment phase rather than downloading them when the skill is invoked.
-
Commit a lockfile generated by a supported package manager and enforce lockfile-only or frozen-lockfile installation.
-
Verify package provenance and integrity. Pin expected registry metadata and integrity hashes where the deployment system supports doing so.
-
Explicitly configure and validate the trusted npm registry. Do not inherit arbitrary user-controlled registry settings in security-sensitive deployments.
-
Audit the pinned package, its lifecycle scripts, and its complete transitive dependency graph before release. Use automated dependency and provenance checks in CI.
-
Run the MCP server in a restricted environment with:
- Only the required environment variables.
- Minimal filesystem access.
- No unnecessary host credentials.
- Restricted outbound network access.
- A dedicated, unprivileged operating-system account or container.
-
Require deliberate review and version updates rather than automatically accepting the newest registry release.
-
Update both
bin/start-mcp.shand the setup command inSKILL.mdso documentation cannot reintroduce the unsafe floating invocation.
-
