T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:56
- Finding
- Unpinned third-party dependencies and remotely downloaded model artifacts<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:56-60`, `SKILL.md:70-73`, `scripts/transcribe.py:294-300`, `scripts/transcribe.py:488-491`, `scripts/transcribe.py:520-537` **Vulnerability Type**: Supply-chain exposure through mutable dependencies **Risk Level**: Medium ### Vulnerable Code ```bash pip3 install faster-whisper pip3 install websocket-client ``` ```python try: import websocket except ImportError: print("[ERROR] Missing websocket-client library. Install it with: pip install websocket-client", file=sys.stderr) return None, None ``` ```python try: import yt_dlp except ImportError: sys.exit("[ERROR] yt-dlp is not installed. Install it with: pip install yt-dlp") ``` ```python from faster_whisper import WhisperModel local_model = os.path.join(os.path.expanduser("~"), ".whisper-models-local") local_bin = os.path.join(local_model, "model.bin") if os.path.exists(local_bin) and os.path.getsize(local_bin) > 10_000_000: model = WhisperModel(local_model, device="cpu", compute_type="int8") else: model = WhisperModel( model_size, device="cpu", compute_type="int8", download_root=MODEL_DIR, ) ``` ### Technical Analysis The documented installation procedure retrieves `faster-whisper` and `websocket-client` without pinned versions, package hashes, or a dependency lock file. The implementation also optionally imports `yt_dlp` and allows `faster-whisper` to download model artifacts dynamically. Python packages can execute arbitrary code during installation and import. Because no reviewed versions or hashes are specified, the effective dependency code may change after the Skill itself has been audited. The model download is also accepted without an application-level expected digest. This behavior is related to the declared transcription and browser functionality, but the mutable supply-chain trust exceeds the minimum risk necessary to provide that functionality. ### Attack ...[truncated 1237 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Add a reviewed dependency lock file containing exact versions for direct and transitive dependencies. 2. Require hashes, for example through `pip install --require-hashes -r requirements.txt`. 3. Pin `faster-whisper`, `websocket-client`, `yt-dlp`, and their transitive dependencies to reviewed releases. 4. Use an explicitly trusted package index or an internally mirrored repository. 5. Record and verify expected checksums for downloaded model artifacts where the model distribution mechanism permits it. 6. Document a controlled update process in which dependency upgrades are reviewed and scanned before release. 7. Consider running transcription and browser extraction in a restricted environment with minimal filesystem and network access. ]]>
