T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:13
- Finding
- Unpinned Global npm Package Installation Creates Supply-Chain Exposure## Vulnerability Details **File Location**: `SKILL.md:13-18`, with related installation instructions at `SKILL.md:46` and `SKILL.md:108-111` **Vulnerability Type**: Unpinned third-party dependency installed globally **Risk Level**: Medium ### Vulnerable Code ```yaml "install": [ { "id": "node", "kind": "node", "package": "remnote-mcp-server", ``` Related installation instructions: ```text - Preferred install: `npm install -g remnote-mcp-server` ``` ```text - Install matching server package version: - Exact: `npm install -g remnote-mcp-server@<plugin-version>` - Or same minor line (`0.<minor>.x`) when exact is unavailable. ``` ### Technical Analysis The default installation configuration identifies `remnote-mcp-server` without an exact version or integrity hash. The documented preferred command consequently installs whichever release is associated with the package's current npm distribution tag. npm packages can run lifecycle scripts during installation. A malicious or compromised future package release could therefore execute code under the privileges of the user performing the global installation. Global installation increases the affected scope by placing executables and package files in shared user-level or system-level npm locations. The compatibility procedure recommends an exact runtime-derived plugin version when available, which is safer than an unversioned installation. However, it does not require a reviewed version, lockfile, checksum, signature, trusted registry configuration, or integrity verification. The same-minor fallback also permits installation of package contents that were not reviewed with this Skill. ### Attack Path 1. An attacker compromises the npm package, a maintainer account, the publication process, or a transitive dependency. 2. The attacker publishes a malicious release and makes it eligible for the unpinned package specificat ...[truncated 1168 chars]
- Remediation
- ## Remediation Suggestions 1. Pin `remnote-mcp-server` to a specifically reviewed exact version in both the metadata installer and documentation. 2. Verify the package artifact using an expected integrity hash or a cryptographically authenticated release process. 3. Use a lockfile where package management permits it so transitive dependencies are also reproducible. 4. Configure npm to use an explicitly trusted registry and reject unexpected registry substitution. 5. Prefer a project-local or isolated installation rather than `npm install -g`. 6. Avoid administrative installation and run the CLI using a dedicated least-privileged account or sandbox. 7. Disable npm lifecycle scripts during installation where compatible, then explicitly run only reviewed setup actions. 8. Do not automatically install a version solely because it is reported by a runtime component. Validate it against an allowlist of reviewed compatible versions. 9. Document a controlled upgrade process that reviews new package and transitive-dependency versions before changing the pin.
