T08 · Insecure Dependencies
Warning
- Location
- README.md:140
- Finding
- Unpinned Third-Party Packages May Execute Mutable Supply-Chain Code<![CDATA[ ## Vulnerability Details **File Location**: `README.md:140-149`, `SKILL.md:33-38`, `package.json:3-5` **Vulnerability Type**: Unpinned and automatically executed third-party dependencies **Risk Level**: Medium ### Vulnerable Code `README.md:140-149`: ```markdown ## Installation ```bash # Via ClawHub npx clawhub@latest install see-video # Manual git clone https://github.com/john-ver/see-video cd see-video && npm install ``` ``` `SKILL.md:33-38`: ```markdown ## Setup (first time only) ```bash cd <skill directory> npm install ``` ``` `package.json:3-5`: ```json "dependencies": { "llm-frames": "^0.2.2" } ``` The committed lockfile currently resolves `llm-frames` version `0.2.2` from the official npm registry and includes an integrity hash: ```json "node_modules/llm-frames": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/llm-frames/-/llm-frames-0.2.2.tgz", "integrity": "sha512-d5We/klIcWZFHuUHsR13DJ9BHA87ca5PUHgk9lc57ba8b3T9LeFueo8JW7IaWP5KjK5DwYuXu0yu6hEMzYq0WA==", "license": "MIT" } ``` ### Technical Analysis The documented `npx clawhub@latest` command downloads and executes the package version associated with the mutable `latest` distribution tag. Consequently, the code executed by future installations can differ from the version reviewed during this audit. The `llm-frames` dependency is also declared with the caret range `^0.2.2`, allowing npm dependency resolution to select later semver-compatible releases when the lockfile is not strictly enforced. The instructions recommend `npm install` rather than deterministic installation with `npm ci`. Although the current lockfile limits this risk when honored, the package manifest itself does not pin the dependency exactly. npm packages may define lifecycle scripts that run during installation. Therefore, compromise of an allowed package release or publisher account could turn an otherwise routine installation into arbitrary local code execution. No evidence was found t ...[truncated 1560 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Replace the mutable ClawHub invocation with an exact, reviewed version: ```bash npx clawhub@<reviewed-version> install see-video ``` 2. Pin `llm-frames` to an exact version in `package.json`: ```json "dependencies": { "llm-frames": "0.2.2" } ``` 3. Update setup documentation to use the committed lockfile deterministically: ```bash npm ci ``` 4. Keep `package.json` and `package-lock.json` synchronized and require lockfile changes to undergo code review. 5. Inspect dependency lifecycle scripts before upgrades. Where compatible with the package, disable automatic lifecycle-script execution: ```bash npm ci --ignore-scripts ``` 6. Run dependency installation in a restricted, non-administrative environment with minimal filesystem access, no unnecessary credentials, and limited network permissions. 7. Use automated dependency scanning and release-integrity verification, and review package ownership, provenance, and source changes before accepting upgrades. ]]>
