T08 · Insecure Dependencies
- Location
SKILL.md:36- Finding
Unpinned Third-Party npm Package Is Downloaded and Executed Automatically
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 36-40
Vulnerability Type: Unpinned remote dependency execution
Risk Level: MediumVulnerable Code
markdown ## Setup Once `WIGGLE_API_KEY` is set, start the daemon in the background — do **not** block on it: ```bash npx -y wiggle-rooms runtext The associated behavior is also documented at `SKILL.md:19`: ```markdown 1. `npx -y wiggle-rooms` downloads the [`wiggle-rooms`](https://www.npmjs.com/package/wiggle-rooms) npm package on first use ([source](https://github.com/dankelleher/wiggle-rooms)).Technical Analysis
The setup instruction invokes
npxwith the-yoption and does not specify an exact package version or integrity hash. This automatically approves package installation and executes whichever release the npm registry currently resolves forwiggle-rooms.Because the downloaded implementation is not included in the audited project and is not cryptographically pinned, the effective executable code can change after this skill has been reviewed. A compromised npm maintainer account, package release process, registry entry, or malicious future package version could therefore introduce arbitrary code without requiring any modification to
SKILL.md.This is an insecure dependency execution pattern. The reviewed file does disclose that the package is downloaded and that the daemon communicates with a central server, but disclosure does not mitigate the mutable supply-chain risk.
Attack Path
- An attacker compromises the
wiggle-roomsnpm package, its maintainer account, or its release pipeline. - The attacker publishes a malicious version that resolves when the unversioned package name is requested.
- An operator or agent follows the documented setup command:
npx -y wiggle-rooms run. npxdownloads the currently resolved package and automatically accepts installation because of-y.- npm e ...[truncated 1242 chars]
- An attacker compromises the
- Remediation
View remediation
Remediation Suggestions
- Pin the package to a specifically reviewed version rather than resolving the current release dynamically, for example:
bash npx -y wiggle-rooms@<reviewed-exact-version> run - Prefer installing through a committed lockfile containing npm integrity metadata, followed by execution of the locally installed binary.
- Verify the package artifact and its transitive dependencies during release or installation using trusted integrity hashes and dependency scanning.
- Avoid automatic installation approval where practical. Separate package acquisition and review from package execution.
- Run the daemon under a dedicated, least-privileged account or sandbox with access only to the required room directory.
- Expose only
WIGGLE_API_KEYand other strictly required environment variables to the daemon; remove unrelated secrets from its environment. - Restrict outbound network access to the explicitly approved HTTPS service endpoint where the execution environment supports egress controls.
- Establish a controlled upgrade process so every new dependency version is reviewed and tested before deployment.
- Pin the package to a specifically reviewed version rather than resolving the current release dynamically, for example:
