T08 · Insecure Dependencies
- Location
SKILL.md:6- Finding
Mutable npm Dependency Executed in Cryptocurrency Wallet Workflow
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, line 6
Vulnerability Type: Unpinned third-party executable dependency
Risk Level: MediumThe allowed tool configuration authorizes multiple commands that execute the mutable
latestrelease of the OpenAnt npm CLI:yaml allowed-tools: ["Bash(npx @openant-ai/cli@latest status*)", "Bash(npx @openant-ai/cli@latest tasks create *)", "Bash(npx @openant-ai/cli@latest tasks fund *)", "Bash(npx @openant-ai/cli@latest tasks list *)", "Bash(npx @openant-ai/cli@latest whoami*)", "Bash(npx @openant-ai/cli@latest wallet *)"]Technical Analysis
The Skill uses
npxto resolve, download, and execute@openant-ai/cli@latest. Thelatestnpm distribution tag is mutable, so the code executed at runtime can differ from the version reviewed during this audit. No exact version, lockfile, package integrity hash, or locally verified binary is specified.This creates a supply-chain trust boundary in which compromise of the npm package, publisher account, release pipeline, or distribution tag could introduce arbitrary code without requiring any modification to
SKILL.md. The risk is amplified because even nominally read-only operations such asstatusandwallet balanceexecute the package before funded operations are presented for confirmation.The Skill includes appropriate semantic safeguards for financial operations, including requiring confirmation before funding and checking wallet balance first. However, these instructions cannot constrain malicious code inside a compromised npm package once
npxexecutes it.Attack Path
- An attacker compromises the npm publisher account, package release process, or another mechanism controlling
@openant-ai/cli. - The attacker publishes a malicious release and assigns it to the mutable
latestdistribution tag. - A user invokes the Skill for a legitimate task-creation request.
- The agent runs an allowed command su ...[truncated 1257 chars]
- An attacker compromises the npm publisher account, package release process, or another mechanism controlling
- Remediation
View remediation
Remediation Suggestions
- Replace every
@latestreference with an exact, reviewed package version, for example@openant-ai/cli@X.Y.Z. - Install the CLI through a controlled deployment process using a committed lockfile rather than downloading it dynamically during each Skill invocation.
- Enforce npm integrity verification and retain reviewed package hashes or signed release provenance.
- Disable install scripts where compatible, and audit the package and its transitive dependencies before upgrades.
- Update the allowed-tool patterns so they authorize only the pinned executable and the minimum required subcommands.
- Run the CLI in a sandbox with restricted filesystem, environment-variable, credential, and network access.
- Separate read-only status operations from transaction-signing capabilities and require an external wallet confirmation that displays the destination, chain, token, amount, and task identifier.
- Introduce a deliberate dependency-update process in which new versions are reviewed and tested before changing the pinned version.
- Replace every
