T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:20
- Finding
- Unpinned Wallet CLI Dependency with Mandatory Runtime Self-Updates## Vulnerability Details **File Location**: `SKILL.md`, lines 20–29 and 62–71 **Vulnerability Type**: Supply-chain exposure through an unpinned npm dependency and runtime self-update mechanism **Risk Level**: Medium **Complete vulnerable code snippets:** ```json "install": [ { "id": "node", "kind": "node", "package": "goodwallet", "bins": ["goodwallet"], "label": "Install Goodwallet CLI (npm)" } ], ``` ```markdown ## Setup This skill assumes the `goodwallet` CLI is installed globally and available in PATH. If not, install it via npm: Do NOT use `npx`. Always use the globally installed binary. ## Update Before running any other command, check for updates: 1. `goodwallet update` — check for a new version. 2. If outdated, run `goodwallet update --install` before proceeding. ``` ### Technical Analysis The installation metadata identifies the npm package only as `goodwallet`, without a fixed version or integrity digest. The skill additionally instructs the agent to execute the CLI's update check before every other command and to run `goodwallet update --install` whenever an update is available. This makes the behavior reviewed in the skill dependent on mutable third-party package contents and an external update mechanism that is not included in the audited project. A later package release or update can therefore introduce behavior that was not present during review. Requiring a globally installed binary also increases potential impact because the updated executable remains available outside an individual isolated skill run. The audited file does not itself prove that the package or update service is malicious. The vulnerability is the absence of dependency immutability and independent update verification in a security-sensitive wallet workflow. ### Attack Path 1. An attacker compromises the npm publisher account, package distribution path, or update channel used by the `g ...[truncated 1581 chars]
- Remediation
- ## Remediation Suggestions 1. Pin the npm dependency to a specific, reviewed version rather than using the mutable package name alone. 2. Lock and verify the package integrity digest using npm lockfile integrity metadata or an equivalent cryptographic verification mechanism. 3. Remove the requirement to perform self-updates before every wallet operation. Updates should be reviewed, tested, and deployed through a separate controlled process. 4. Require signed releases or independently verified checksums for CLI updates, and fail closed when verification cannot be completed. 5. Prefer a project-local or isolated installation over a global installation. Run the CLI in a sandbox or container with access only to the files and network destinations required for the requested operation. 6. Restrict filesystem permissions on `~/.config/goodwallet/` and separate wallet credentials from environments used to install or test updates. 7. Preserve explicit user confirmation for all signing and fund-moving operations, and display independently derived transaction destinations, assets, amounts, chains, and fees before approval. 8. Maintain an allowlisted version policy and document a rollback procedure for compromised or defective releases.
