T08 · Insecure Dependencies
- Location
SKILL.md:13- Finding
Unpinned Global npm Package Installation Creates Supply-Chain Exposure
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:13-18, with related installation instructions atSKILL.md:46andSKILL.md:108-111
Vulnerability Type: Unpinned third-party dependency installed globally
Risk Level: MediumVulnerable 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-serverwithout 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
- An attacker compromises the npm package, a maintainer account, the publication process, or a transitive dependency.
- The attacker publishes a malicious release and makes it eligible for the unpinned package specificat ...[truncated 1168 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin
remnote-mcp-serverto a specifically reviewed exact version in both the metadata installer and documentation. - Verify the package artifact using an expected integrity hash or a cryptographically authenticated release process.
- Use a lockfile where package management permits it so transitive dependencies are also reproducible.
- Configure npm to use an explicitly trusted registry and reject unexpected registry substitution.
- Prefer a project-local or isolated installation rather than
npm install -g. - Avoid administrative installation and run the CLI using a dedicated least-privileged account or sandbox.
- Disable npm lifecycle scripts during installation where compatible, then explicitly run only reviewed setup actions.
- Do not automatically install a version solely because it is reported by a runtime component. Validate it against an allowlist of reviewed compatible versions.
- Document a controlled upgrade process that reviews new package and transitive-dependency versions before changing the pin.
- Pin
