T08 · Insecure Dependencies
- Location
SKILL.md:14- Finding
Unpinned npm Package Installation and Execution
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 14–17
Vulnerability Type: Unpinned third-party dependency execution
Risk Level: MediumVulnerable Code
markdown ## Installation The skill uses `@google/design.md` npm package: ```bash npm install -g @google/design.mdtext The unpinned package is subsequently invoked through `npx` at lines 23, 36–37, 42–43, and 59–65. Representative execution instructions include: ```bash npx @google/design.md lint DESIGN.md npx @google/design.md diff DESIGN.md DESIGN-v2.md npx @google/design.md export --format tailwind DESIGN.md > tailwind.theme.json npx @google/design.md export --format dtcg DESIGN.md > tokens.json npx @google/design.md spec npx @google/design.md spec --rulesTechnical Analysis
The Skill instructs users or agents to globally install and execute
@google/design.mdwithout an exact version, lockfile, or integrity verification. Package resolution can therefore select a release published after this Skill was audited. The reviewed project contains no package manifest, lockfile, checksum, or vendored source that establishes which implementation will execute.A global npm installation can run package lifecycle scripts and changes the user's global npm environment. The repeated unversioned
npxcommands may also resolve or retrieve package code according to the local npm configuration and installed package state. Consequently, compromise of the package, its transitive dependency chain, or the configured registry could turn these legitimate-looking instructions into arbitrary local code execution.This finding establishes unsafe supply-chain exposure; it does not establish that the named package is currently malicious.
Attack Path
- An attacker compromises a future release of
@google/design.md, one of its transitive dependencies, or a registry used by the target. - The malicious package is published under a version satisfying the unpinned resolution.
- A user o ...[truncated 939 chars]
- An attacker compromises a future release of
- Remediation
View remediation
Remediation Suggestions
- Pin
@google/design.mdto a reviewed exact version rather than relying on mutable package resolution. - Declare it as a project-local dependency and commit the corresponding package manifest and lockfile.
- Use a deterministic installation command such as
npm ciin a controlled environment. - Verify registry provenance and package integrity before execution.
- Avoid global installation; invoke the pinned project-local binary instead.
- Disable npm lifecycle scripts during installation with
--ignore-scriptswhere package functionality permits, or explicitly audit every required lifecycle script. - Review and pin relevant transitive dependencies through the lockfile.
- Perform dependency execution in a restricted environment with only the filesystem, credentials, and network access required for design-file processing.
- Pin
