T08 · Insecure Dependencies
- Location
SKILL.md:30- Finding
Unpinned Global Installation of a Third-Party Dependency
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 30-33
Vulnerability Type: Unpinned third-party package installation
Risk Level: MediumVulnerable Code
bash npm install -g vaultctl vaultctl config set vault "g:\笔记\喜悦天地"Technical Analysis
The installation instructions globally install the third-party
vaultctlnpm package without specifying an exact version. The project does not include a lockfile, integrity hash, verified package provenance, or vendored implementation.Consequently, the installed package is determined by the registry state at installation time rather than by the version reviewed with this Skill. npm package installation can execute package lifecycle scripts, including installation-time scripts, with the privileges of the invoking user. Global installation also places the package outside an isolated project environment and makes it available system-wide.
This creates a software supply-chain risk: if the package, its publisher account, or one of its transitive dependencies is compromised, following the documented installation command could execute attacker-controlled code. The audit did not establish that
vaultctlis currently malicious; the vulnerability is the unpinned and globally scoped installation process.Attack Path
- An attacker compromises the npm package, its publisher account, or a transitive dependency, or causes an unsafe release to become the registry's default version.
- A user or agent follows the instructions in
SKILL.md. npm install -g vaultctlresolves the package version from the registry at installation time.- npm downloads the package and may execute attacker-controlled lifecycle scripts with the invoking user's privileges.
- The installed executable can subsequently run when the Skill invokes
vaultctl. - Malicious code could access data available to the user, including the configured Obsidian vault, and could modify other resources permitted by that account ...[truncated 665 chars]
- Remediation
View remediation
Remediation Suggestions
-
Pin
vaultctlto an exact version that has been reviewed:bash npm install --save-exact vaultctl@<reviewed-version> -
Prefer a project-local installation over a global installation. Commit the generated lockfile so dependency resolution is reproducible.
-
Verify the package publisher, official registry location, release provenance, and integrity before installation.
-
Use npm integrity metadata and a trusted internal registry or approved package mirror where appropriate.
-
Review transitive dependencies and package lifecycle scripts. Disable lifecycle scripts during installation when compatible with the package:
bash npm install --ignore-scripts --save-exact vaultctl@<reviewed-version> -
Run the tool under a non-administrative account with filesystem access limited to the required vault directory.
-
Document the expected package version and checksum in
SKILL.md, and require security review before updating either value.
-
