T08 · Insecure Dependencies
Error
- Location
- SKILL.md:42
- Finding
- Unpinned Privileged Third-Party CLI Installation<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, line 42 **Vulnerability Type**: Supply-chain exposure through an unpinned global dependency **Risk Level**: High ### Vulnerable Code ```sh npm install -g @fetchproxy/cli # provides `fpx` ``` ### Technical Analysis The setup installs the latest available version of `@fetchproxy/cli` globally without an exact version, lockfile, integrity hash, or other provenance verification. Because the package is installed globally, its installation scripts and executable code run with the privileges of the user performing the installation. This dependency occupies a sensitive trust boundary: the documented workflow uses `fpx` to access browser `localStorage` containing a reusable HoneyBook bearer token, user ID, and optional trusted-device state. A compromised publisher account, registry, package release, or transitive dependency could therefore introduce arbitrary code after the Skill has been reviewed. The audit did not establish that the current package is malicious. The vulnerability is that the command automatically trusts whichever package version the registry resolves at execution time. ### Attack Path 1. An attacker compromises the npm package publisher, registry delivery path, or a transitive dependency. 2. The attacker publishes a modified version under the legitimate package name. 3. A user follows the Skill instructions and runs `npm install -g @fetchproxy/cli`. 4. npm resolves and executes the compromised release, including any lifecycle scripts. 5. The malicious package runs with the installing user's privileges. 6. During subsequent session capture, it can read or transmit the HoneyBook bearer token and browser-derived storage data. 7. The stolen token may then be replayed against HoneyBook APIs until it expires or is revoked. ### Impact Assessment Successful exploitation could provide code execution under the installing user's account and access to session credentials processed by the ...[truncated 305 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions - Pin `@fetchproxy/cli` to an exact, reviewed version rather than resolving the latest release. - Record and verify package integrity using a lockfile and registry-provided integrity hash. - Prefer a project-local installation over `npm install -g`. - Disable lifecycle scripts where operationally possible, or separately review all required installation scripts. - Review the package and relevant transitive dependencies before granting access to browser session data. - Run the CLI in a constrained environment with no access to unrelated credentials or files. - Establish an update process that reviews version changes before changing the pin. ]]>
