T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:7
- Finding
- Unpinned Globally Installed Third-Party Executable<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 7–12 **Vulnerability Type**: Supply-chain exposure through an unpinned npm dependency **Risk Level**: Medium ### Vulnerable Code Snippet ```yaml requires: bins: [tasktime] install: - id: node kind: node package: "@versatly/tasktime" bins: [tasktime, tt] label: Install TaskTime CLI (npm) ``` The documented installation command at lines 20–22 further confirms that the package is installed globally without a version constraint: ```bash npm install -g @versatly/tasktime ``` ### Technical Analysis The skill depends on the external npm package `@versatly/tasktime` but does not pin an exact version or provide an integrity hash. Consequently, the code installed during a future deployment may differ from the code available when the skill was audited. A global npm installation can also execute package lifecycle scripts and places executable commands in the user's global binary path. The repository contains only `SKILL.md`; it does not contain the dependency's implementation, lockfile, checksum, or vendored source. Therefore, the behavior of the installed CLI and any npm lifecycle scripts cannot be verified from the audited artifact. This finding does not establish that the current package is malicious. It identifies an unsafe and mutable supply-chain trust boundary. ### Attack Path 1. An attacker compromises the npm publisher account, release pipeline, or package distribution process for `@versatly/tasktime`. 2. The attacker publishes a malicious version under the existing package name. 3. A user or agent installs the skill using `npm install -g @versatly/tasktime`. 4. npm resolves the unpinned package to the attacker-controlled release. 5. Malicious lifecycle scripts may execute during installation, or malicious CLI logic may execute when `tasktime` or `tt` is invoked. 6. The payload runs with the privileges of the user performing the installation or invoking the CLI. # ...[truncated 638 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Pin `@versatly/tasktime` to an exact, reviewed version rather than relying on the latest compatible release. 2. Verify the package using a trusted lockfile and registry integrity hash. 3. Publish or reference the corresponding auditable source code and build provenance. 4. Prefer a project-local installation over a global installation to reduce system-wide exposure. 5. Where compatible with the package, install with npm lifecycle scripts disabled and explicitly review any required scripts before enabling them. 6. Use a trusted registry, dependency monitoring, signed provenance, and automated alerts for publisher or package changes. 7. Re-audit the package implementation whenever the pinned version is updated. ]]>
