T08 · Insecure Dependencies
- Location
SKILL.md:17- Finding
Unpinned Third-Party Package Executes with Wallet and Payment Capabilities
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 17-20
Additional Relevant Locations:SKILL.md, lines 45-46, 62-98, and 109-118
Vulnerability Type: Unsafe execution of an unpinned third-party dependency
Risk Level: HighVulnerable Code
sh npx -y agentcash@latest balance npx -y agentcash@latest fetch https://api.utilia.ink/v1/fees/priority --yesThe Skill also directs execution of another externally retrieved package:
sh npx -y utilia-solana-agent@0.5.7 doctorPersistent MCP integration similarly executes that package while granting it access to the configured wallet path:
json { "mcpServers": { "utilia": { "command": "npx", "args": ["-y", "utilia-solana-agent@0.5.7", "mcp"], "env": { "SOLANA_KEYPAIR_PATH": "/absolute/path/to/low-balance-agent-wallet.json" } } } }Technical Analysis
The
npx -ycommands retrieve and execute npm package code without interactive review. The use ofagentcash@latestis particularly unsafe becauselatestis a mutable registry tag: the effective code can change after the Skill has been reviewed without requiring any modification to this repository.The downloaded AgentCash client creates and manages a wallet, reports its balance, negotiates a payment challenge, and automatically approves a paid request through
--yes. Consequently, externally controlled package code executes in a security-sensitive context involving a potentially funded wallet.utilia-solana-agent@0.5.7is pinned to a version, which reduces version drift, but no package source, lockfile, or integrity hash is included in the audited project. Its implementation and handling of wallet credentials, submitted data, and network requests therefore cannot be verified from this artifact. MCP mode increases the exposure by keeping the external client available persistently with access to `SOLANA_KEYP ...[truncated 2647 chars]- Remediation
View remediation
Remediation Suggestions
- Replace
agentcash@latestwith an exact, reviewed package version. Do not use mutable npm tags for software that manages wallets or authorizes payments. - Commit a lockfile containing verified integrity hashes, or vendor the reviewed client implementation into a controlled distribution process.
- Verify package provenance and signatures where supported. Pin and review all transitive dependencies, not only the top-level package version.
- Avoid executing security-sensitive packages through ad hoc
npx -ydownloads. Install approved artifacts through a controlled build process and execute only the verified local artifact. - Run each call inside a restricted sandbox or container with:
- A dedicated low-value wallet.
- Only the specific wallet variable required for the operation.
- No unrelated secrets in the inherited environment.
- Read-only or narrowly scoped filesystem access.
- Outbound network access restricted to explicitly approved Solana and Utilia endpoints.
- Process, time, and resource limits.
- Enforce payment recipient, asset, network, per-call price, and cumulative budget limits outside the downloaded client where possible. Require explicit confirmation for payments rather than relying solely on
--yes. - Prefer one-shot execution over persistent MCP operation. If MCP access is required, isolate it in a dedicated process with a narrowly scoped wallet and terminate it when the task ends.
- Require explicit user approval before transmitting serialized transactions or other potentially sensitive blockchain data, in addition to the existing media-consent requirement.
- Independently audit the source of both external packages and verify that private keys are never logged, transmitted, included in error reports, or exposed to unnecessary subprocesses.
- Replace
