T08 · Insecure Dependencies
- Location
SKILL.md:49- Finding
Unpinned Global npm Package Installation Creates a Supply-Chain Risk
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 49-53
Vulnerability Type: Unpinned third-party executable dependency
Risk Level: Mediumbash ### 1. Install the skill package ```bash npm install -g @pinch-protocol/skilltext The package is also declared without a version or integrity constraint in the skill metadata: ```yaml install: - kind: node package: "@pinch-protocol/skill" bins: - pinch-whoami - pinch-send - pinch-connect - pinch-accept - pinch-reject - pinch-contacts - pinch-history - pinch-status - pinch-autonomy - pinch-permissions - pinch-activity - pinch-intervene - pinch-mute - pinch-audit-verify - pinch-audit-exportTechnical Analysis
The project delegates its executable behavior to the externally retrieved
@pinch-protocol/skillnpm package. The installation command does not specify an exact version, registry integrity hash, signature, or immutable source revision. Consequently, the effective code installed by following the documentation can change after this project has been reviewed.Installing the package globally also places its executables on the user's
PATH. npm lifecycle scripts and subsequently invoked CLI programs execute with the privileges of the installing user. The audited artifact contains only documentation and does not include the package source, a lockfile, an SBOM, or checksums that would allow the executable implementation to be compared with the documented security claims.This finding establishes a supply-chain exposure, not evidence that the current npm package is malicious.
Attack Path
- An attacker compromises the package publisher account, registry distribution path, or a future release of
@pinch-protocol/skill. - The attacker publishes a modified package version containing a malicious lifecycle ...[truncated 1389 chars]
- An attacker compromises the package publisher account, registry distribution path, or a future release of
- Remediation
View remediation
Remediation Suggestions
- Pin the package to an exact, reviewed version, for example
@pinch-protocol/skill@0.2.1, rather than relying on the mutable latest release. - Record and verify the npm registry integrity hash for the approved package artifact.
- Publish a lockfile and SBOM identifying all direct and transitive dependencies.
- Provide the executable package source in the audited repository, or link the package version to an immutable signed source commit.
- Sign release artifacts and verify signatures before installation.
- Prefer a project-local installation over
npm install -gto reducePATHexposure and isolate dependency resolution. - Disable npm lifecycle scripts during installation where operationally possible, then explicitly review any scripts required by the package.
- Run the tools under a dedicated, least-privileged account with narrowly restricted access to the keypair, data directory, and network.
- Add automated dependency provenance, vulnerability, and publisher-change checks to the release process.
- Pin the package to an exact, reviewed version, for example
