T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:24
- Finding
- Unpinned Third-Party MCP Package Is Automatically Downloaded and Executed<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 24-39 **Vulnerability Type**: Unpinned runtime dependency execution **Risk Level**: Medium ### Vulnerable Code ```json { "agents": { "list": [{ "id": "main", "mcp": { "servers": [{ "name": "wishfinity", "command": "npx", "args": ["-y", "wishfinity-mcp-plusw"] }] } }] } } ``` ### Technical Analysis The documented configuration uses `npx -y` to resolve, download, and execute `wishfinity-mcp-plusw` without specifying an exact version. The `-y` option suppresses the installation confirmation prompt. Because the dependency is not pinned to an audited version and no lockfile, integrity hash, provenance requirement, or vendored artifact is provided, the executable payload can change after the Skill has been reviewed. Security therefore depends on the continuing integrity of the npm package, its publisher account, the registry resolution process, and every transitive dependency. This is a supply-chain exposure rather than evidence that the current package is malicious. Nevertheless, a compromised publisher account, malicious future release, or compromised transitive dependency could cause attacker-controlled JavaScript to execute when OpenClaw starts the MCP server. ### Attack Path 1. An attacker compromises the npm package publisher, a relevant dependency, or another part of the package distribution chain. 2. The attacker publishes a malicious release under the existing `wishfinity-mcp-plusw` package name. 3. A user applies the documented configuration without an exact package version. 4. The user restarts the OpenClaw gateway as instructed. 5. `npx -y` resolves and downloads the attacker-controlled release without requesting confirmation. 6. The package executes as an MCP server with the operating-system permissions and runtime access available to the OpenClaw gateway user. 7. Malicious package code could attemp ...[truncated 885 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Pin the MCP package to a specific, reviewed version: ```json { "name": "wishfinity", "command": "npx", "args": ["wishfinity-mcp-plusw@X.Y.Z"] } ``` 2. Verify the selected release's provenance and npm integrity metadata before deployment. 3. Use a lockfile or an internally mirrored and approved artifact so installations remain reproducible. 4. Remove `-y` where interactive approval is practical, while noting that confirmation alone does not replace version pinning. 5. Review the package and its transitive dependencies before approving upgrades. 6. Run the MCP server in a sandbox or container with: - A dedicated unprivileged account. - Minimal filesystem access. - No unnecessary environment variables or secrets. - Restricted outbound network access. - Read-only mounts wherever practical. 7. Document what product URL data is sent to the MCP server and any external service, including retention and privacy implications. 8. Establish a controlled update process in which new versions are reviewed, tested, and explicitly approved before deployment. ]]>
