T08 · Insecure Dependencies
- Location
SKILL.md:4- Finding
Unpinned Third-Party Trading Dependency Receives Wallet Credentials
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, line 4
Vulnerability Type: Unpinned and privileged third-party dependency
Risk Level: HighVulnerable 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
outsmartpackage 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 declaresPRIVATE_KEYandMAINNET_ENDPOINTas 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
- An attacker compromises the
outsmartnpm package, one of its dependencies, or its publishing account. - The attacker publishes a malicious version under the existing package name.
- The Skill installation process resolves and installs the mutable package version because no version or integrity value is pinned.
- The Agent invokes the installed
outsmartexecutable for an information, trading, or liquidity oper ...[truncated 889 chars]
- An attacker compromises the
- Remediation
View remediation
Remediation Suggestions
- Pin
outsmartto an exact, reviewed version rather than resolving the current npm release. - Enforce an expected package integrity hash and retain a lockfile covering all transitive dependencies.
- Verify npm package provenance, repository ownership, release signatures, and dependency history before installation.
- Vendor or otherwise make the reviewed executable source available with the Skill so that installed behavior can be compared with audited behavior.
- 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.
- 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.
- Require explicit confirmation of token mint, amount, slippage, recipient, program identifiers, and expected balance changes before signing.
- Simulate transactions and enforce transaction-level spending limits before mainnet submission.
- Pin
