T08 · Insecure Dependencies
- Location
SKILL.md:12- Finding
Unpinned Global Installation of Third-Party Dependencies
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 12–16
Vulnerability Type: Unpinned and globally installed third-party dependencies
Risk Level: MediumVulnerable Code Snippet:
bash npm install -g @erdinccurebal/webcli npx playwright install chromiumTechnical Analysis
The documented prerequisites instruct users or agents to globally install
@erdinccurebal/webcliwithout specifying a reviewed version or integrity value. They also invoke Playwright throughnpxwithout pinning the package version that must provide the executable.Consequently, package resolution can change after the Skill has been reviewed. A later package release, compromised publisher account, malicious transitive dependency, or registry-resolution issue could introduce attacker-controlled code. npm packages can execute lifecycle scripts during installation, including during global installation, with the permissions of the invoking user.
The global installation also expands the potential effect beyond an isolated project environment by modifying the user's global Node.js package environment. The evidence does not establish that the referenced packages are currently malicious; the vulnerability is the unsafe, mutable dependency-installation process.
Attack Path
- An attacker compromises the package publisher, a transitive dependency, or the relevant package-distribution channel.
- The attacker publishes a malicious release or modifies a dependency selected by unconstrained version resolution.
- A user or AI agent follows the prerequisites and runs the documented commands.
- npm or
npxresolves the attacker-controlled package version because no reviewed version or integrity constraint is specified. - Malicious package code or an installation lifecycle script executes locally with the invoking user's privileges.
- The malicious code can access data available to that user and alter the global Node.js env ...[truncated 739 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin every directly invoked package to a reviewed, exact version rather than relying on the latest registry release.
- Install dependencies within an isolated project or container instead of modifying the global Node.js environment.
- Maintain and verify a lockfile and package integrity metadata from a trusted registry.
- Avoid ambiguous
npxresolution. Invoke a locally installed, version-pinned Playwright executable, or use an explicit reviewed package version. - Review package provenance, publisher ownership, transitive dependencies, release signatures, and lifecycle scripts before approving upgrades.
- Disable npm lifecycle scripts during installation where operationally feasible, then explicitly run only reviewed setup steps.
- Execute browser tooling with a dedicated, non-privileged account and restrict its filesystem, environment-variable, credential, and network access.
- Document the expected package registry and reject dependency resolution from untrusted or user-controlled registries.
