T08 · Insecure Dependencies
- Location
SKILL.md:9- Finding
Unpinned Third-Party npm Dependency Allows Supply-Chain Compromise
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:9-18; duplicated inmcporter-readme.md:9-18
Vulnerability Type: Unpinned third-party dependency
Risk Level: MediumVulnerable Code
SKILL.md:9-18:json "requires": { "bins": ["mcporter"], "env": ["CLOUDPHONE_API_KEY"] }, "install": [ { "id": "node", "kind": "node", "package": "mcporter", "bins": ["mcporter"], "label": "Install mcporter (node)", }, ],The same unsafe package declaration appears in
mcporter-readme.md:9-18:json "requires": { "bins": ["mcporter"] }, "install": [ { "id": "node", "kind": "node", "package": "mcporter", "bins": ["mcporter"], "label": "Install mcporter (node)", }, ],Technical Analysis
Both installation declarations identify the dependency only by the mutable npm package name
mcporter. They provide no exact version, lockfile, registry restriction, integrity hash, provenance verification, or validated source reference.Consequently, installation may resolve whichever package release the configured npm registry currently serves. If the package, publisher account, registry, or resolution configuration is compromised, a malicious release could be installed without any change to this audited project. npm lifecycle scripts may also execute during installation unless explicitly disabled.
This is a supply-chain weakness rather than evidence that the current
mcporterpackage is malicious. No malicious dependency payload was present in the reviewed files.Attack Path
- An attacker compromises the npm publisher account, package distribution channel, or registry used to resolve
mcporter. - The attacker publishes or serves a malicious release under the expected package name.
- A user or automated Agent installs this skill using the declared Node installation metadata.
...[truncated 1257 chars]
- An attacker compromises the npm publisher account, package distribution channel, or registry used to resolve
- Remediation
View remediation
Remediation Suggestions
- Pin
mcporterto an exact, reviewed version rather than using an unqualified package name. - Add a lockfile containing registry-resolved integrity metadata and require reproducible, frozen-lockfile installation.
- Restrict installation to the official npm registry or an internally controlled registry mirror.
- Verify the package publisher, source repository, release provenance, and signatures where supported.
- Validate the downloaded package against an approved cryptographic integrity hash before installation.
- Disable npm lifecycle scripts during installation where they are not required, for example through an equivalent of
--ignore-scripts, after confirming that the package operates correctly without them. - Run installation and execution under a dedicated, least-privileged account or sandbox.
- Expose
CLOUDPHONE_API_KEYonly to the process that requires it and restrict the key to the minimum necessary server permissions. - Apply the same pinned and verified package declaration consistently in both
SKILL.mdandmcporter-readme.md. - Add automated dependency monitoring and require security review before updating the pinned version.
- Pin
