T08 · Insecure Dependencies
- Location
SKILL.md:5- Finding
Unpinned Third-Party Package Handles Wallet Private Keys and Funds
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 5–33
Vulnerability Type: Unpinned and unverifiable third-party dependency with access to sensitive wallet credentials
Risk Level: HighVulnerable Code
yaml metadata: {"openclaw":{"emoji":"✊","always":false,"os":["darwin","linux"],"requires":{"bins":["node","npx"],"env":["PRIVATE_KEY"]},"primaryEnv":"PRIVATE_KEY","source":"https://github.com/wof-games/rps-mcp","homepage":"https://watchorfight.com","install":[{"id":"rps-mcp","kind":"node","package":"@watchorfight/rps-mcp","version":"^1.5.0","bins":["wof-rps"],"label":"Install WatchOrFight RPS CLI (npm)"}]}}bash npm install -g @watchorfight/rps-mcpmarkdown | Variable | Required | Description | |---|---|---| | `PRIVATE_KEY` | Yes | Wallet private key (needs ETH for gas + USDC for stakes) |Technical Analysis
The skill directs users to install
@watchorfight/rps-mcpglobally from npm without pinning the installed artifact to an exact, audited version and integrity digest. The metadata specifies the mutable semantic-version range^1.5.0, while the documented installation command omits a version entirely and can therefore retrieve the current registry release.The installed CLI is granted access to
PRIVATE_KEY, a credential capable of signing blockchain transactions for the associated wallet. It is also expected to perform USDC approvals and value-bearing transactions. Consequently, this dependency occupies a highly sensitive trust position.The audited project contains only
SKILL.md; it does not include the CLI source, a lockfile, an integrity hash, or verifiable provenance binding the npm artifact to a reviewed source commit. The referenced GitHub repository and recommendation to inspect it do not independently establish that the installed npm package corresponds to the reviewed source.Attack Path
- An attacker compromises the npm publisher account, pack ...[truncated 1772 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin the dependency to an exact reviewed version rather than
^1.5.0, and include that exact version in the documented installation command. - Verify the package with a trusted integrity digest and npm provenance before installation. Bind the published package to a reviewed source commit and reproducible build.
- Include the relevant executable source in the audited project, or vendor a reviewed artifact, so its transaction and secret-handling behavior can be verified.
- Avoid global installation where possible. Run the package in an isolated environment with minimal filesystem, network, and process privileges.
- Avoid exposing a raw wallet private key through a broadly inherited environment variable. Prefer a hardware wallet, isolated signing service, or ephemeral signer that requires explicit approval.
- Enforce signer-level restrictions: allowlist chain IDs and contract addresses, cap USDC approvals, reject unlimited approvals, simulate transactions, and require confirmation for every value-bearing operation.
- Use a dedicated wallet containing only the minimum ETH and USDC required for a specific match. Do not reuse a wallet holding unrelated assets or privileged identities.
- Add automated checks that reject unexpected package versions, provenance failures, contract destinations, transaction methods, approval amounts, and chain IDs before execution.
- Pin the dependency to an exact reviewed version rather than
