T08 · Insecure Dependencies
- Location
README.md:17- Finding
Unpinned Third-Party Installer Executes Mutable Remote Content
- Content
View full analysis
Vulnerability Details
File Location:
README.md, lines 17–24
Vulnerability Type: Unpinned dependency execution and mutable remote installation
Risk Level: MediumVulnerable Code
bash npx skills add anivar/jest-skill -gbash npx skills add https://github.com/anivar/jest-skillTechnical Analysis
The installation instructions invoke
npx skillswithout pinning theskillspackage to a reviewed version or verifying its integrity. Depending on the local environment andnpxbehavior, this can download and execute the currently published package under the invoking user's account.The second command additionally installs Skill content from a mutable GitHub repository reference without pinning it to an immutable commit. Consequently, the effective installer and installed Skill content can differ from the versions covered by this audit.
The global installation flag in the first command increases scope by making the installed Skill available beyond one project. This does not demonstrate that the current package is malicious, but it creates a supply-chain trust boundary that is not constrained by version or integrity controls.
Attack Path
- An attacker compromises the npm package used by
npx skills, its publisher account, or a transitive dependency. - Alternatively, the attacker compromises the referenced GitHub repository or its maintainer account.
- The attacker publishes a malicious package version or changes the repository's mutable default branch.
- A user follows one of the documented installation commands.
npxretrieves and executes the unpinned installer under the user's privileges.- The installer retrieves mutable Skill content and, with the global form, installs it into a cross-project location.
- Malicious installer code could access resources available to the invoking user, while malicious Skill instructions could affect later agent sessions in which the globally installed Skill is loaded.
...[truncated 867 chars]
- An attacker compromises the npm package used by
- Remediation
View remediation
Remediation Suggestions
-
Pin the
skillsinstaller to a specifically reviewed version rather than invoking the mutable latest release:bash npx --yes skills@<audited-version> add ... -
Pin repository installation to an immutable commit SHA or cryptographically verified release tag where the installer supports it.
-
Publish expected commit identifiers or checksums and instruct users to verify downloaded content before installation.
-
Avoid global installation by default. Recommend project-scoped installation and document the additional trust implications of
-gseparately. -
Use lockfiles, provenance attestations, signed releases, and registry integrity metadata for the installer and its transitive dependencies.
-
In security-sensitive environments, require users to download and inspect the pinned installer and Skill content before executing or enabling them.
-
Add an explicit warning that
npxcan download and execute packages and that repository URLs without commit pins may resolve to content different from the audited revision.
-
