T08 · Insecure Dependencies
- Location
mcp-server.example.json:3- Finding
Unpinned npm Package Is Automatically Downloaded and Executed
- Content
View full analysis
Vulnerability Details
File Location:
mcp-server.example.json:3-4; duplicated inSKILL.md:30-31
Vulnerability Type: Unpinned third-party dependency execution
Risk Level: MediumVulnerable Code
mcp-server.example.json:3-4:json "command": "npx", "args": ["-y", "settld-mcp"],SKILL.md:30-31:text - command: `npx` - args: `["-y","settld-mcp"]`Technical Analysis
The MCP server configuration invokes
npx -y settld-mcpwithout specifying an exact package version or verifying package integrity. If the package is not already available locally,npxcan retrieve it from the configured npm registry and execute it immediately. The-yoption suppresses the installation confirmation prompt.This design causes the code executed by the Skill to depend on whichever package version the registry resolves at runtime rather than a version reviewed alongside this project. A compromised publisher account, malicious package release, registry compromise, or unexpected upstream update could therefore introduce arbitrary executable code after the Skill itself has been audited.
The spawned package receives the configured environment, including
SETTLD_API_KEY,SETTLD_TENANT_ID, and service endpoint values. The repository provides no evidence thatsettld-mcpis currently malicious; the risk arises from automatic execution of an unpinned and externally supplied dependency.Attack Path
- An attacker compromises the
settld-mcppublishing account or otherwise causes a malicious version to be resolved by the npm registry. - A user registers or starts the documented MCP server configuration.
npx -y settld-mcpdownloads the currently resolved package without interactive confirmation or an exact version constraint.- The downloaded package executes with the privileges of the process running the agent.
- The malicious package reads environment variables supplied to the MCP ...[truncated 992 chars]
- An attacker compromises the
- Remediation
View remediation
Remediation Suggestions
- Replace the floating package reference with an exact, reviewed version, such as
settld-mcp@X.Y.Z; do not use version ranges. - Install the dependency during a controlled build or deployment phase rather than downloading it when the MCP server starts.
- Commit and enforce an npm lockfile containing integrity hashes, and use
npm ciagainst an approved registry. - Verify package provenance, signatures, checksums, publisher identity, and release contents before upgrades.
- Remove
-yfrom ad hoc runtime installation workflows so unexpected package retrieval cannot proceed silently. - Run the MCP server in a sandbox or container with a non-privileged account, restricted filesystem access, and narrowly allowlisted network destinations.
- Supply a narrowly scoped, short-lived, and revocable Settld API key. Avoid granting settlement or payment permissions not required by the intended tools.
- Establish dependency monitoring and an explicit review process for every package-version update.
- Replace the floating package reference with an exact, reviewed version, such as
