T08 · Insecure Dependencies
- Location
SKILL.md:47- Finding
Mutable npm Package Is Downloaded and Executed Through npx
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:47
Vulnerability Type: Supply-chain risk from an unpinned third-party dependency
Risk Level: MediumVulnerable code snippet:
bash npx @vincentai/cli@latest secret list --type HYPERLIQUID_WALLETThe same mutable
@latestpackage reference is used throughout the documented wallet, trading, withdrawal, transfer, and trading-engine workflows, includingSKILL.md:55,73,90-93,112,138,146,155-165,190-216,228-268,296, and305-340.Technical Analysis
The skill repeatedly directs the agent to execute
@vincentai/clithroughnpxusing the mutable@latestdistribution tag.npxcan download and immediately execute the package version currently associated with that tag. Consequently, the effective executable code can change after the skill has been reviewed.If the npm publisher account, package release process, package dependencies, or registry-delivered artifact is compromised, an attacker can publish altered code under
latest. The next documented invocation would execute that code with the permissions of the agent process.This risk is especially significant because the CLI resolves wallet API credentials and supports financially sensitive operations, including trades, USDC withdrawals, internal transfers, and automated trading rules. Although
SKILL.md:11-12declares access to the wallet-specific credential locations rather than unrelated credential stores, malicious dependency code would run locally and would not necessarily remain within that intended least-privilege boundary.Attack Path
- An attacker compromises the npm publisher account, release pipeline, a transitive dependency, or another component used to publish
@vincentai/cli. - The attacker publishes a malicious package version and assigns it to the
latestdistribution tag. - An agent follows the skill documentation and invokes an `npx @vincen ...[truncated 1411 chars]
- An attacker compromises the npm publisher account, release pipeline, a transitive dependency, or another component used to publish
- Remediation
View remediation
Remediation Suggestions
- Replace every
@latestreference with an exact, reviewed package version, for example@vincentai/cli@X.Y.Z. - Install dependencies in a controlled setup phase using a committed lockfile rather than downloading executable code during each wallet operation.
- Enforce package integrity verification through lockfile integrity hashes, a trusted internal registry, or an equivalent artifact-verification mechanism.
- Review the pinned package and its transitive dependency tree before deployment.
- Enable npm provenance verification and require protected, strongly authenticated package publication.
- Run the CLI in a sandbox with access limited to the required
agentwalletcredential, necessary temporary storage, and approved network destinations. - Ensure wallet API tokens have narrowly scoped permissions, low transaction limits, withdrawal restrictions, and human approval requirements for sensitive operations.
- Monitor package-version changes and require a fresh security review before updating the pinned version.
- Replace every
