T08 · Insecure Dependencies
- Location
SKILL.md:241- Finding
Unpinned Third-Party CLI Installed Globally
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, line 241
Vulnerability Type: Supply-chain exposure through an unpinned global npm dependency
Risk Level: MediumVulnerable Code Snippet:
bash npm install -g birdThe same installation command is also referenced in the dependency table at line 281.
Technical Analysis
The skill directs users or agents to install the npm package
birdglobally without specifying an exact version, package integrity hash, verified publisher, or authoritative source repository. The artifact also contains no package manifest or lockfile capable of providing reproducible dependency resolution.Consequently, npm resolves whichever package version is current when the command runs. npm packages may execute lifecycle scripts during installation. If the named package or one of its transitive dependencies is compromised, replaced, or resolves to an unintended package, attacker-controlled code could execute during installation. The
-goption increases exposure by installing the package into the user's global npm environment rather than isolating it within the project.This finding establishes an insecure dependency-installation pattern. The audited artifact does not establish that the current
birdpackage itself is malicious.Attack Path
- An attacker compromises the resolved
birdpackage, its publisher account, or a transitive dependency, or publishes a release containing a malicious lifecycle script. - A user or tool-enabled agent follows the instruction in
SKILL.mdand runsnpm install -g bird. - npm retrieves the current unpinned package and dependencies from the configured registry.
- Malicious package code or lifecycle scripts execute with the privileges of the user running npm.
- The payload can access resources available to that user, potentially including the
.envsocial-platform credentials used by this skill, and can modify files or the us ...[truncated 581 chars]
- An attacker compromises the resolved
- Remediation
View remediation
Remediation Suggestions
- Identify and document the exact official package, publisher, and source repository rather than relying only on the short package name.
- Pin a reviewed, known-good version instead of resolving the latest release dynamically.
- Add a project-local
package.jsonand committed lockfile with integrity metadata to make installation reproducible. - Prefer a local project dependency over
npm install -g, and invoke its binary through a package script ornpx --no-install. - Review the package and its transitive dependencies, including lifecycle scripts, before approval.
- Where compatible with the dependency, install with lifecycle scripts disabled and enable only specifically reviewed build steps.
- Run installation without administrative privileges and in an isolated environment with no production credentials present.
- Document package provenance and periodically audit pinned dependencies for compromise and known vulnerabilities.
