T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:58
- Finding
- Unpinned npm Package Downloaded and Executed at Runtime## Vulnerability Details **File Location**: `SKILL.md`, lines 58–59 and 87 **Vulnerability Type**: `T08: Insecure Dependencies` **Risk Level**: Medium **Vulnerable code:** ```json "command": "npx", "args": ["-y", "@nutrient-sdk/dws-mcp-server"], ``` ```text - MCP server mode (`npx @nutrient-sdk/dws-mcp-server`) downloads the official Nutrient MCP server package from npm at runtime. ``` ### Technical Analysis The recommended MCP configuration invokes `npx -y` without specifying an exact package version or verifying package integrity. Each installation can therefore download and execute whichever package release currently resolves under the `@nutrient-sdk/dws-mcp-server` name. The artifact does not contain a lockfile, integrity hash, vendored implementation, or exact version constraint that would make dependency resolution reproducible. Although the package is described as official, a compromised npm publisher account, malicious upstream release, or other supply-chain incident could change the code executed after this skill has been reviewed. The `-y` option automatically accepts the installation, reducing the opportunity for users to inspect the resolved version before execution. ### Attack Path 1. An attacker compromises the upstream npm publisher account, package distribution process, or a future package release. 2. The attacker publishes a malicious version under `@nutrient-sdk/dws-mcp-server`. 3. A user starts the MCP server using the documented `npx -y` configuration. 4. npm resolves and downloads the mutable package version without an exact version or integrity pin. 5. The malicious package executes locally with the privileges of the user running the MCP client. 6. The package may access inherited environment variables, including `NUTRIENT_DWS_API_KEY`, and files available through the configured sandbox or process permissions. ### Impact Assessment Successful exploitation could result in arbitrary c ...[truncated 668 chars]
- Remediation
- ## Remediation Suggestions 1. Pin the dependency to an exact reviewed version, such as: ```json "args": ["-y", "@nutrient-sdk/dws-mcp-server@X.Y.Z"] ``` 2. Use a lockfile and npm integrity metadata where the MCP client deployment model permits it. 3. Prefer installing the dependency through a controlled build process rather than downloading it whenever the MCP server starts. 4. Verify package provenance, signatures, and integrity before installation. 5. Upgrade only through a documented review process that examines dependency changes before deployment. 6. Avoid automatic installation acceptance where practical, or validate the resolved package version before execution. 7. Configure `SANDBOX_PATH` to the narrowest directory required for the current task. 8. Provide the MCP process only the required API key and avoid exposing unrelated credentials through inherited environment variables. 9. Run the MCP server under a dedicated, least-privileged operating-system account or isolated container. 10. Monitor npm advisories and upstream repository releases for package compromise or unexpected ownership changes.
