T08 · Insecure Dependencies
- Location
SKILL.md:10- Finding
Unpinned npm Package Is Automatically Downloaded and Executed
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 10–16
Vulnerability Type: Unpinned third-party dependency execution
Risk Level: Highjson "mcp": { "name": "payclaw", "command": "npx", "args": ["-y", "@payclaw/mcp-server"], "env": { "PAYCLAW_API_URL": "https://api.payclaw.io" }, },Technical Analysis
The Skill launches
@payclaw/mcp-serverthroughnpxwithout specifying an exact package version or verifying an integrity hash. As a result, the package version resolved at execution time can differ from the version that was originally reviewed.The
-yoption automatically accepts installation prompts, allowing the remotely distributed package to be downloaded and executed without interactive confirmation. Because the MCP server source is not included in the audited project, its effective behavior—including local credential storage, network communication, identity-token processing, and payment-card operations—cannot be verified from this repository.This creates a third-party software supply-chain boundary in which a compromised npm package, publisher account, or subsequently malicious release can introduce arbitrary executable code.
Attack Path
- An attacker compromises the npm publisher account, package release process, or another component capable of publishing
@payclaw/mcp-server. - The attacker publishes a malicious version under the legitimate package name.
- A user loads or starts the Skill configuration.
npx -y @payclaw/mcp-serverresolves the unpinned package version and downloads it when necessary.- The malicious package executes with the operating-system permissions and environment available to the Agent process.
- The payload can inspect accessible files and environment variables, intercept PayClaw operations, alter payment requests, misuse locally stored authentication material, or communicate captured data to an attacker-contro ...[truncated 478 chars]
- An attacker compromises the npm publisher account, package release process, or another component capable of publishing
- Remediation
View remediation
Remediation Suggestions
- Pin
@payclaw/mcp-serverto a specific, independently audited version rather than allowing npm to resolve the current release. - Use a lockfile and verify package integrity against an approved cryptographic hash before execution.
- Remove automatic confirmation through
-ywhere practical, especially for first-time package installation. - Vendor the reviewed MCP server implementation or include its source in the audited artifact so its authentication, credential-storage, networking, and payment behavior can be examined.
- Monitor the selected package version for ownership changes, unexpected releases, and dependency-chain compromises.
- Run the MCP server in a sandbox with minimal filesystem access, a restricted environment, outbound-network allowlisting, and no access to unrelated credentials.
- Apply an explicit upgrade-review process so package versions change only after source and dependency verification.
- Pin
