T08 · Insecure Dependencies
- Location
SKILL.md:10- Finding
Unpinned Global Installation of a Third-Party CLI
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, line 10
Vulnerability Type: Supply-chain risk through an unpinned globally installed dependency
Risk Level: HighVulnerable Code Snippet:
markdown If not installed: `npm install -g @tiny-fish/cli`Technical Analysis
The Skill instructs the Agent to install the latest available release of
@tiny-fish/cliglobally. The command does not specify an exact reviewed version, integrity hash, lockfile, or package provenance requirement.A global npm installation can execute package installation logic with the permissions of the user running npm. Because the requested version is not pinned, the code installed during a future invocation may differ from the version originally reviewed. Compromise of the package, its publishing account, or one of its transitive dependencies could consequently introduce arbitrary executable behavior without any change to this Skill file.
The global installation scope also exceeds the minimum scope required for an individual Skill invocation. It changes the user's persistent tool environment and makes the installed CLI available to unrelated projects and future sessions.
Attack Path
- An attacker compromises the npm package, a maintainer account, or a transitive dependency used by a future
@tiny-fish/clirelease. - A user invokes the Skill on a system where the CLI is not installed.
- The Agent follows the documented command and installs the current package globally.
- npm executes package or dependency lifecycle code with the installing user's privileges.
- The compromised package can access files and credentials available to that user or install a modified CLI that executes attacker-controlled behavior during later calls.
- Because the installation is global and persistent, the compromised tool may affect later sessions and unrelated workflows.
Impact Assessment
Successful exploitation could provid ...[truncated 553 chars]
- An attacker compromises the npm package, a maintainer account, or a transitive dependency used by a future
- Remediation
View remediation
Remediation Suggestions
- Pin
@tiny-fish/clito an exact, reviewed version rather than installing the latest release. - Verify the package's registry provenance, publisher identity, and integrity metadata before installation.
- Prefer a project-local, isolated installation rather than the persistent global
-gscope. - Use a lockfile or equivalent reproducible dependency manifest for the CLI and its transitive dependencies.
- Disable npm lifecycle scripts during installation unless they are verified as necessary.
- Run the CLI in a sandbox or container with restricted filesystem, environment-variable, and network access.
- Document a controlled upgrade and security-review process before changing the pinned version.
- Never install the package with administrative privileges unless a separately reviewed requirement makes that unavoidable.
- Pin
