T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:5
- Finding
- Unpinned Third-Party Dependency Installation<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:5`, `SKILL.md:373`, and `README.md:21` **Vulnerability Type**: Unpinned dependency installation **Risk Level**: Medium ### Vulnerable Code `SKILL.md:5`: ```yaml metadata: {"clawdbot":{"emoji":"🦞","os":["darwin","linux"],"requires":{"bins":["yt-dlp","ffmpeg","whisper"]},"install":[{"id":"yt-dlp","kind":"brew","formula":"yt-dlp","bins":["yt-dlp"],"label":"Install yt-dlp via Homebrew"},{"id":"ffmpeg","kind":"brew","formula":"ffmpeg","bins":["ffmpeg"],"label":"Install ffmpeg via Homebrew"},{"id":"whisper","kind":"shell","command":"pip3 install --user openai-whisper","label":"Install Whisper (local, no API key)"}]}} ``` `SKILL.md:373`: ```markdown - `whisper` — `pip3 install openai-whisper` (runs locally, no API key) ``` `README.md:21`: ```markdown | whisper | `pip3 install openai-whisper` | ``` ### Technical Analysis The installation commands do not pin `openai-whisper` to a reviewed version and do not verify package integrity with hashes. Consequently, the package and its transitive dependencies are resolved dynamically at installation time. The code installed in the future may therefore differ from the dependency version that existed when this skill was audited. This creates a supply-chain exposure if the package distribution account, package repository, or any transitive dependency is compromised. Installing into the user environment with `--user` also exposes the user's Python environment to the selected package rather than containing it in a dedicated virtual environment. The available evidence does not establish that `openai-whisper` is malicious. The vulnerability is the absence of reproducible version and integrity controls. ### Attack Path 1. An attacker compromises a future `openai-whisper` release, a transitive dependency, or the relevant package publishing account. 2. A user installs the skill requirements by running the documented unpinned `pip3 install` command. 3. Pip resolv ...[truncated 873 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Pin Whisper and all transitive dependencies to reviewed versions using a lock file. 2. Require package hashes, such as through `pip install --require-hashes -r requirements.txt`. 3. Install dependencies in a dedicated virtual environment rather than the user's global or user-level Python environment. 4. Retrieve packages only from an explicitly configured, trusted package index. 5. Add an update process that reviews new dependency versions before changing the lock file. 6. Keep installation instructions consistent between `SKILL.md`, metadata, and `README.md`. 7. Where supported by the skill platform, replace an arbitrary shell installation command with a structured package declaration that enforces versions and provenance. ]]>
