T08 · Insecure Dependencies
Error
- Location
- SKILL.md:4
- Finding
- Unpinned Third-Party Trading Dependency Receives Wallet Credentials## Vulnerability Details **File Location**: `SKILL.md`, line 4 **Vulnerability Type**: Unpinned and privileged third-party dependency **Risk Level**: High ### Vulnerable Code ```yaml metadata: { "openclaw": { "requires": { "bins": ["outsmart", "curl"], "env": ["PRIVATE_KEY", "MAINNET_ENDPOINT"] }, "install": [{ "id": "node", "kind": "node", "package": "outsmart", "bins": ["outsmart"], "label": "Install outsmart CLI (npm)" }] } } ``` ### Technical Analysis The Skill installs the `outsmart` package from npm without specifying an exact version, integrity hash, lockfile, or verifiable package provenance. The installed executable is subsequently used for financial transactions, while the Skill declares `PRIVATE_KEY` and `MAINNET_ENDPOINT` as required environment variables. This creates a high-impact supply-chain trust boundary. A mutable npm release, compromised package maintainer account, malicious transitive dependency, or package ownership transfer could cause unreviewed code to execute under the Agent's operating-system account. Because the required environment includes a wallet private key, a compromised executable could read and exfiltrate that key or manipulate transactions before signing or submission. The dependency is necessary for the declared trading functionality, but exposing a reusable raw private key to an unpinned third-party executable exceeds minimum privilege. The project contains no local implementation, lockfile, checksums, or other controls that constrain the installed code. ### Attack Path 1. An attacker compromises the `outsmart` npm package, one of its dependencies, or its publishing account. 2. The attacker publishes a malicious version under the existing package name. 3. The Skill installation process resolves and installs the mutable package version because no version or integrity value is pinned. 4. The Agent invokes the installed `outsmart` executable for an information, trading, or liquidity oper ...[truncated 889 chars]
- Remediation
- ## Remediation Suggestions 1. Pin `outsmart` to an exact, reviewed version rather than resolving the current npm release. 2. Enforce an expected package integrity hash and retain a lockfile covering all transitive dependencies. 3. Verify npm package provenance, repository ownership, release signatures, and dependency history before installation. 4. Vendor or otherwise make the reviewed executable source available with the Skill so that installed behavior can be compared with audited behavior. 5. Do not expose a reusable raw private key to the CLI. Prefer a hardware wallet, isolated signer, or transaction-signing service that displays and approves each transaction. 6. If a raw key is unavoidable, use a dedicated low-value burner wallet with no authority over unrelated assets and inject the credential only into the specific signing process. 7. Require explicit confirmation of token mint, amount, slippage, recipient, program identifiers, and expected balance changes before signing. 8. Simulate transactions and enforce transaction-level spending limits before mainnet submission.
