T08 · Insecure Dependencies
- Location
SKILL.md:8- Finding
Unpinned Executable npm Dependency
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 8–11
Vulnerability Type: Unpinned third-party executable dependency
Risk Level: MediumVulnerable Code
json "requires": { "bins": ["vortex-notes"] }, "install": [{ "id": "npm", "kind": "npm", "package": "vortex-notes", "bins": ["vortex-notes"] }],The installed binary is subsequently invoked by instructions including:
sh vortex-notes search "<query>" --vault <vault>The Skill also proposes starting it as an MCP server:
sh vortex-notes mcp --vault <vault>Technical Analysis
The installation metadata identifies
vortex-notesonly by its npm package name. It does not specify an exact version, integrity hash, lockfile, trusted repository commit, or other immutable provenance information. Installation can therefore resolve to a mutable package release whose implementation was not included in the audited project.Because the dependency provides an executable, its installation scripts and runtime behavior execute with the permissions of the agent user. The audited project contains no source code for that dependency, so its effective behavior cannot be statically verified from this artifact.
This is a supply-chain weakness rather than evidence that the current package is malicious. The risk arises if the npm package, maintainer account, publication process, or dependency chain is compromised or if a future release introduces unsafe behavior.
Attack Path
- An attacker compromises the
vortex-notesnpm package, its publisher account, or a transitive dependency, or publishes an unsafe later release. - The Skill installer resolves the unpinned package name to the attacker-controlled or unsafe version.
- Package installation scripts may execute during installation with the agent user's privileges.
- The agent follows the Skill instructions and invokes
vortex-notes searchor startsvortex-notes mcp. - The compromised executable run ...[truncated 826 chars]
- An attacker compromises the
- Remediation
View remediation
Remediation Suggestions
- Pin
vortex-notesto a reviewed, exact version rather than resolving a mutable latest release. - Verify the package with a lockfile and registry integrity hash, and enforce immutable or reproducible installation.
- Document and validate package provenance, including its official repository, publisher identity, release signature, and source-to-package correspondence.
- Audit the package source, lifecycle scripts, and transitive dependency tree before approval.
- Disable npm lifecycle scripts during installation unless they are explicitly required and reviewed.
- Execute the binary in a sandbox with filesystem access restricted to the selected vault and with network access disabled unless necessary.
- Use the documented
--read-onlymode whenever write access is not required. - Apply least-privilege permissions to the vault and avoid exposing unrelated user files or credentials to the process.
- Consider vendoring the reviewed implementation or obtaining it from a controlled internal package registry.
- Pin
