T08 · Insecure Dependencies
- Location
SKILL.md:143- Finding
Unpinned MCP Package Is Automatically Downloaded and Executed
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:143-145,SKILL.md:163-165,README.md:42-44, andREADME.md:75-77
Vulnerability Type: Unpinned third-party package execution
Risk Level: MediumVulnerable 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
npxwith the-yoption and the unversioned package nameletagentpay-mcp. If the package is not already available locally,npxmay 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
- A user copies the documented MCP configuration into OpenClaw.
- OpenClaw invokes ...[truncated 1368 chars]
- Remediation
View remediation
Remediation Suggestions
-
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.
-
Prefer an explicit installation process backed by a committed lockfile rather than downloading a package dynamically whenever the MCP server starts.
-
Verify package provenance and integrity using registry integrity metadata, trusted publishing, release signatures, or independently recorded cryptographic hashes.
-
Remove automatic confirmation where practical so unexpected dependency retrieval does not occur silently.
-
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.
-
Assign the agent token the minimum server-side permissions necessary and support prompt revocation and rotation if dependency compromise is suspected.
-
Pin versions in the optional
pip installandnpm installSDK examples as well, and document the use of lockfiles and hash verification.
-
