T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:143
- Finding
- Unpinned MCP Package Is Automatically Downloaded and Executed## Vulnerability Details **File Location**: `SKILL.md:143-145`, `SKILL.md:163-165`, `README.md:42-44`, and `README.md:75-77` **Vulnerability Type**: Unpinned third-party package execution **Risk Level**: Medium ### Vulnerable Code `SKILL.md:143-145`: ```json "letagentpay": { "command": "npx", "args": ["-y", "letagentpay-mcp"], ``` The same configuration is repeated in `SKILL.md:163-165`. `README.md:42-44`: ```json "letagentpay": { "command": "npx", "args": ["-y", "letagentpay-mcp"], ``` The same configuration is repeated in `README.md:75-77`. Additional unpinned SDK installation recommendations appear at `README.md:109-110`: ```markdown - **Python**: `pip install letagentpay` ([GitHub](https://github.com/LetAgentPay/letagentpay-python)) - **TypeScript**: `npm install letagentpay` ([GitHub](https://github.com/LetAgentPay/letagentpay-js)) ``` ### Technical Analysis The recommended OpenClaw configuration launches `npx` with the `-y` option and the unversioned package name `letagentpay-mcp`. If the package is not already available locally, `npx` may retrieve the current package release from the configured npm registry and execute it without interactive confirmation. Because neither an exact package version nor an integrity digest is specified, the code executed by this configuration can change after the Skill has been reviewed. The implementation of the MCP server is not included in the audited project, so its runtime behavior and the documentation's claims about token scope and server-side policy enforcement cannot be independently verified from this artifact. This is a supply-chain trust weakness rather than evidence that the current package is malicious. Exploitation would require compromise of the package, its publisher account, the configured registry, or a future package release. ### Attack Path 1. A user copies the documented MCP configuration into OpenClaw. 2. OpenClaw invokes ...[truncated 1368 chars]
- Remediation
- ## Remediation Suggestions 1. Replace the unversioned package name with an exact, reviewed version, for example: ```json { "command": "npx", "args": ["-y", "letagentpay-mcp@1.2.3"] } ``` The example version must be replaced with a release that has actually been reviewed. 2. Prefer an explicit installation process backed by a committed lockfile rather than downloading a package dynamically whenever the MCP server starts. 3. Verify package provenance and integrity using registry integrity metadata, trusted publishing, release signatures, or independently recorded cryptographic hashes. 4. Remove automatic confirmation where practical so unexpected dependency retrieval does not occur silently. 5. Run the MCP server in a restricted environment with: - A dedicated low-privilege operating-system account or container. - Minimal filesystem access. - Network access limited to required service endpoints. - Only the required environment variable. - No unrelated payment credentials or user secrets. 6. Assign the agent token the minimum server-side permissions necessary and support prompt revocation and rotation if dependency compromise is suspected. 7. Pin versions in the optional `pip install` and `npm install` SDK examples as well, and document the use of lockfiles and hash verification.
