T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:34
- Finding
- Unpinned Third-Party Installation Executes Unreviewed Supply-Chain Code## Vulnerability Details **File Location**: `SKILL.md`, lines 34–39 **Vulnerability Type**: Unpinned and unreviewed third-party source installation **Risk Level**: Medium ### Vulnerable Code ```bash git clone https://github.com/cuuush/groupme-cli cd groupme-cli npm install npm run bundle npm link ``` ### Technical Analysis The installation procedure clones the default branch of an external GitHub repository without pinning an immutable commit or verified release. It then invokes several operations capable of executing code supplied by that repository or its dependencies: - `npm install` can execute npm dependency lifecycle scripts. - `npm run bundle` executes a script defined by the downloaded repository. - `npm link` exposes the resulting executable through the user's npm global command environment. No commit hash, dependency integrity baseline, artifact checksum, or verified provenance is specified. The external repository and its dependencies are not included in the audited project, so their implementation and lifecycle scripts could not be verified during this audit. This creates a supply-chain trust boundary in which the effective installed code can change after the Skill has been reviewed. A compromised upstream repository, mutable default branch, malicious dependency update, or dependency-account compromise could therefore result in arbitrary code execution during installation. ### Attack Path 1. An attacker compromises the upstream repository, one of its npm dependencies, or a maintainer account. 2. The attacker introduces a malicious lifecycle script, build script, dependency version, or CLI implementation. 3. A user follows the Skill's installation instructions and clones the current upstream default branch. 4. `npm install` or `npm run bundle` executes the attacker-controlled code with the installing user's privileges. 5. `npm link` makes the compromised `groupme` executable available through th ...[truncated 850 chars]
- Remediation
- ## Remediation Suggestions 1. Pin installation to an audited, immutable Git commit or cryptographically verified release rather than cloning the mutable default branch. 2. Record and verify the expected commit hash, release signature, or artifact checksum before executing any downloaded content. 3. Require a committed npm lockfile and use `npm ci` to install the exact reviewed dependency graph. 4. Review `package.json`, lifecycle hooks, bundle scripts, transitive dependencies, and the generated executable before installation. 5. Disable lifecycle scripts during initial dependency retrieval where practical, such as with `npm ci --ignore-scripts`, and run only individually reviewed build steps afterward. 6. Prefer an isolated, non-privileged environment or project-local installation over `npm link` and global command exposure. 7. Run dependency auditing and provenance verification as part of release validation. 8. Restrict the GroupMe token to the minimum practical exposure, avoid passing it directly on command lines, and protect `~/.config/groupme/config.json` with user-only file permissions.
