T08 · Insecure Dependencies
Error
- Location
- skill.md:24
- Finding
- Unpinned Third-Party Package Is Entrusted with Wallet Secrets and Transaction Authority<![CDATA[ ## Vulnerability Details **File Location**: `skill.md:24-27`, with installation instructions at `skill.md:114-120` and `skill.md:125-130`; duplicated in `readme.md:43-49` **Vulnerability Type**: Unpinned, externally maintained security-critical dependency **Risk Level**: High ### Vulnerable Code ```yaml packages: - name: openclaw-autonomous-wallet source: npm version: ">=0.1.0" verified_repo: https://github.com/ZhenRobotics/openclaw-autonomous-wallet ``` The Skill then instructs users to install this package globally: ```bash # Install globally npm install -g openclaw-autonomous-wallet # Verify installation autonomous-wallet --version ``` The same unconstrained installation is repeated for ClawHub users: ```bash # Install skill clawhub install ZhenStaff/autonomous-wallet # Then install npm package npm install -g openclaw-autonomous-wallet ``` ### Technical Analysis The dependency declaration accepts every version at or above `0.1.0`. The installation command does not select an exact reviewed release or validate an integrity hash, package signature, or npm provenance record. A repository URL described as “verified” does not establish that the artifact downloaded from npm is built from that repository or corresponds to reviewed source code. This dependency is security-critical because the documentation subsequently gives its CLI access to private keys or mnemonic phrases and authorizes it to sign blockchain transactions. The audited project contains only documentation files and does not include the package implementation, lockfile, integrity metadata, or vendored source. Consequently, the dependency's handling of secrets, network communication, transaction construction, and key storage cannot be validated from this artifact. Global installation increases the exposure because package installation scripts and executables may run with the installing user's privileges and place commands in a shared executable path. ### Attack Path ...[truncated 1315 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Pin the dependency to an exact reviewed version rather than using `>=0.1.0`. 2. Record and verify the package archive's cryptographic integrity hash. 3. Require npm provenance or another verifiable signed build attestation and document how users must validate it. 4. Include a lockfile and the audited package implementation in the review scope, or vendor the reviewed source. 5. Prefer a project-local installation over global installation and invoke the pinned binary through a package runner configured not to download newer versions. 6. Disable or inspect package lifecycle scripts before installation, and perform initial evaluation inside a restricted container or disposable virtual machine. 7. Establish a release process that maps the source commit, generated package archive, integrity digest, and published npm version. 8. Require hardware-wallet signing or an isolated signing service so the dependency never receives raw private keys or seed phrases. 9. Apply transaction policy controls outside the package, including destination allowlists, token-approval limits, spending caps, chain verification, and explicit user confirmation. 10. Do not describe the dependency as “safe and verified” until the distributed artifact and relevant source have undergone an independent security audit. ]]>
