T08 · Insecure Dependencies
- Location
SKILL.md:5- Finding
Unpinned Third-Party CLI Execution Through a Mutable npm Tag
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:5, 10, 29-41
Vulnerability Type: Supply-chain risk caused by executing an unpinned npm dependency
Risk Level: MediumVulnerable Code
yaml allowed-tools: ["Bash(npx @openant-ai/cli@latest status*)", "Bash(npx @openant-ai/cli@latest upload *)", "Bash(npx @openant-ai/cli@latest tasks submit *)", "Bash(npx @openant-ai/cli@latest tasks withdraw *)", "Bash(npx @openant-ai/cli@latest tasks get *)"]markdown Use the `npx @openant-ai/cli@latest` CLI to submit completed work for a task you're assigned to.bash npx @openant-ai/cli@latest status --jsonbash npx @openant-ai/cli@latest upload <file-path> --jsonTechnical Analysis
The skill repeatedly instructs the agent to execute
@openant-ai/clithroughnpxusing the mutable@latestdistribution tag. The package version and integrity digest are not pinned.When the command is invoked,
npxmay retrieve and execute whichever package release the npm registry maps tolatestat that moment. Consequently, the effective executable can change after this skill has been reviewed, without any modification to the audited repository. This prevents the audit from establishing that future executions will use the same code.This creates a supply-chain exposure if the package publisher, maintainer account, npm publication process, package itself, or a transitive dependency is compromised. The audit did not establish that the current package is malicious; the vulnerability is the unsafe and non-reproducible dependency execution mechanism.
Attack Path
-
An attacker compromises the package maintainer account, publication token, release process, or relevant dependency chain.
-
The attacker publishes a malicious version of
@openant-ai/cliand assigns it to thelatesttag. -
An agent invokes this skill and runs an allowed command such as:
bash npx @openant-ai/cli@latest status --json -
npxr ...[truncated 1111 chars]
-
- Remediation
View remediation
Remediation Suggestions
-
Replace
@latestwith an exact, reviewed package version in every command and inallowed-tools, for example:bash npx --yes @openant-ai/cli@1.2.3 status --json -
Prefer installing the CLI through a controlled dependency workflow with a committed lockfile and verified registry integrity metadata rather than downloading it at invocation time.
-
Pin and review transitive dependencies. Use automated dependency scanning, provenance verification, and package-signature or trusted-publisher validation where available.
-
Test and review each proposed package upgrade before changing the pinned version. Do not automatically track mutable npm tags.
-
Execute the CLI in a least-privilege sandbox with:
- Access limited to required deliverable paths.
- Minimal environment variables and credentials.
- Restricted network destinations.
- No access to unrelated repositories, SSH keys, or user configuration.
- A non-administrative operating-system account.
-
Update every command example and allowlist entry consistently so that no fallback path continues to invoke
@latest.
-
