T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:84
- Finding
- Unpinned Global Installation of a Security-Critical Wallet Dependency<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:80-88` and `SKILL.md:133-136` **Vulnerability Type**: Supply-chain exposure through an unpinned third-party dependency **Risk Level**: Medium ### Vulnerable Code ```json "install": [ { "id": "node", "kind": "node", "package": "evalanche", "bins": ["evalanche-mcp"], "label": "Install evalanche (npm)", }, ], ``` ```bash npm install -g evalanche ``` ### Technical Analysis The Skill directs users to install the latest registry-selected version of the `evalanche` npm package globally. Neither the installation metadata nor the setup command specifies an exact version, integrity hash, lockfile, verified source commit, or other immutable package identifier. The package is security-critical because it receives private keys or mnemonic phrases and can sign transactions, transfer assets, trade, bridge tokens, approve token spending, call arbitrary contracts, and upgrade UUPS proxies. Because the reviewed project contains only `SKILL.md`, the actual npm package implementation and its transitive dependency tree were not available for inspection. Global installation also expands the consequences of a supply-chain compromise: npm lifecycle scripts and the installed executable run under the installing user's account and may remain available to later sessions. This does not prove that the current package is malicious. It creates an unsafe trust boundary in which a future package release, compromised publisher account, malicious transitive dependency, or altered registry response could change the executed code after this Skill has been reviewed. ### Attack Path 1. An attacker compromises the npm publisher account, package distribution process, or a dependency used by `evalanche`. 2. The attacker publishes a malicious release under the legitimate package name. 3. A user or agent follows the documented `npm install -g evalanche` instruction. 4. npm selects the malic ...[truncated 1140 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Replace the unversioned package reference with an exact, audited version; do not use a floating range or `latest`. 2. Provide and verify the expected npm integrity hash or package signature before installation. 3. Use a lockfile and review the complete resolved transitive dependency tree. 4. Prefer a project-local installation over a global installation to reduce persistence and executable-shadowing risks. 5. Disable npm lifecycle scripts during installation where compatible, then explicitly run only reviewed setup steps. 6. Tie the package release to a reviewed source commit and document a reproducible-build or provenance verification process. 7. Include the security-critical implementation in the auditable Skill artifact, or otherwise provide immutable source references for every installed release. 8. Run the wallet process under a dedicated, least-privileged operating-system account with access only to its required keystore and network resources. 9. Re-audit each dependency update before changing the pinned version. ]]>
