T08 · Insecure Dependencies
- Location
SKILL.md:8- Finding
Unpinned Third-Party CLI Handles Private Keys and Blockchain Transactions
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 8–16 and line 31
Vulnerability Type: Insecure third-party dependency and supply-chain exposure
Risk Level: MediumVulnerable Code Snippet
yaml metadata: { "openclaw": { "emoji": "🔧", "requires": { "bins": ["jovay"] }, "install": [{ "id": "npm", "kind": "npm", "package": "@jovaylabs/jovay-cli", "bins": ["jovay"], "label": "Install jovay-cli (npm)" }] } }markdown - jovay-cli installed (`npm install -g @jovaylabs/jovay-cli`)Technical Analysis
The Skill installs and fully trusts the external
@jovaylabs/jovay-clinpm package without specifying an exact version or package integrity hash. It also recommends global installation. No source code, lockfile, or integrity metadata for this dependency is present in the audited project.The external executable is subsequently trusted to process private keys and encryption passwords, sign transactions, grant token allowances, interact with arbitrary contracts, bridge assets, and broadcast irreversible blockchain transactions. Because the package implementation was not included in the audit, its behavior cannot be verified from this project alone.
This is a supply-chain risk rather than proof that the named package is malicious. However, a compromised publisher account, registry package, release pipeline, or mutable future version could introduce code that steals wallet credentials or changes transaction parameters.
Attack Path
- An attacker compromises the npm package, its publisher credentials, or its release pipeline.
- A malicious version is published under the same unpinned package name.
- The user follows the Skill instructions and globally installs the package.
- The user supplies wallet credentials or requests a transfer, approval, bridge operation, o ...[truncated 933 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin the dependency to a reviewed, exact version rather than resolving the latest available release.
- Commit a lockfile and verify registry integrity metadata during installation.
- Verify package provenance, signatures, publisher identity, and release-pipeline security.
- Prefer a project-local installation with a controlled execution path instead of a global installation.
- Review or vendor the dependency source used for security-sensitive wallet and transaction operations.
- Run the CLI with minimum operating-system privileges and isolate it from unrelated credentials and files.
- Require users to inspect the network, chain ID, recipient, spender, contract address, calldata, value, and fees on a trusted display before signing or broadcasting.
- Consider hardware-wallet support so the third-party CLI never directly receives exportable private keys.
