T08 · Insecure Dependencies
Error
- Location
- SKILL.md:78
- Finding
- Unpinned Third-Party CLI Executes with Access to Wallet Credentials## Vulnerability Details **File Location**: `SKILL.md`, lines 32-36 and 78-94 **Vulnerability Type**: Unpinned runtime dependency with sensitive credential and payment access **Risk Level**: High ### Vulnerable Code ```markdown - **Supply Chain & Auditability**: The [PayNode CLI](https://github.com/PayNodeLabs/paynode-402-cli) and its core dependency [@paynodelabs/sdk-js](https://github.com/PayNodeLabs/paynode-sdk-js) are **100% Open Source** and verifiable. While we use `bunx` for its seamless update delivery, strict environments should **Git clone & audit** the source code and use a local build: - _Local Install Path_: `git clone ... && bun link` then use `paynode-402` directly instead of `bunx`. - **Runtime Transparency**: The CLI v2.7.2+ is designed to be deterministic. You can pin specific versions via `bunx @paynodelabs/paynode-402-cli@<VERSION>` to prevent auto-updates in critical workflows. ``` ```bash bunx @paynodelabs/paynode-402-cli check --network mainnet --confirm-mainnet --json bunx @paynodelabs/paynode-402-cli list-paid-apis --network mainnet --confirm-mainnet --json --limit 3 bunx @paynodelabs/paynode-402-cli get-api-detail crypto-price-quick --network mainnet --confirm-mainnet --json bunx @paynodelabs/paynode-402-cli invoke-paid-api crypto-price-quick coin_id=bitcoin --network mainnet --confirm-mainnet --json ``` ### Technical Analysis The recommended execution path uses `bunx @paynodelabs/paynode-402-cli` without an exact package version or integrity constraint. Consequently, the effective executable is obtained from the package registry at runtime and may differ from the version reviewed when this Skill was published. This dependency is especially sensitive because the Skill declares access to `CLIENT_PRIVATE_KEY` and the fallback file `~/.config/paynode/config.json`. The CLI also performs network operations and signs cryptocurrency payments. A compromised package publication, m ...[truncated 2003 chars]
- Remediation
- ## Remediation Suggestions 1. Replace every unversioned invocation with an exact, audited version, such as `@paynodelabs/paynode-402-cli@2.7.5`. 2. Enforce package integrity through a lockfile, verified registry integrity hashes, signed provenance, or a vendored and reviewed local build. 3. Pin all transitive dependencies and use automated dependency review before upgrades. 4. Do not expose the private key directly to a general-purpose package process. Prefer a restricted signer that enforces chain, recipient, token, and maximum-value policies. 5. Run the CLI in a sandbox with minimal filesystem access, a restricted environment, and outbound network allowlisting. 6. Use a dedicated burner wallet with only the minimum funds needed for one approved operation. 7. Make testnet and read-only operation the defaults. Require explicit user approval for each mainnet payment, including the exact price, recipient, asset, network, and spending limit. 8. Ensure the distributed package artifact is reproducibly linked to the reviewed source revision.
