T08 · Insecure Dependencies
Warning
- Location
- scripts/install_deps.py:91
- Finding
- Unpinned Third-Party Dependencies Are Installed and Executed## Vulnerability Details **File Location**: `scripts/install_deps.py:91-123`; related installation instructions appear in `SKILL.md:55-59, 109, 121, 264-265` and `scripts/transcribe.py:517-520` **Vulnerability Type**: Unpinned dependency installation and software supply-chain exposure **Risk Level**: Medium ### Vulnerable Code ```python def install_yt_dlp(): """Install yt-dlp via pip.""" try: import yt_dlp print('[OK] yt-dlp already installed') return True except ImportError: pass print('[INSTALL] yt-dlp...') return run([sys.executable, '-m', 'pip', 'install', 'yt-dlp', '--user'], check=False) def install_whisper(mode='openai'): """Install speech-to-text engine (openai-whisper or faster-whisper).""" if mode == 'faster': try: import faster_whisper print('[OK] faster-whisper already installed') return True except ImportError: pass print('[INSTALL] faster-whisper...') return run([sys.executable, '-m', 'pip', 'install', 'faster-whisper', '--user'], check=False) else: try: import whisper print('[OK] openai-whisper already installed') return True except ImportError: pass print('[INSTALL] openai-whisper...') return run([sys.executable, '-m', 'pip', 'install', 'openai-whisper', '--user'], check=False) ``` The documentation also directs users to install other unpinned packages: ```markdown python scripts/install_deps.py pip install funasr modelscope pip install pywhispercpp ``` ### Technical Analysis The dependency installer invokes pip using package names without reviewed version constraints, a lock file, or cryptographic hashes. Pip therefore resolves whichever compatible releases and transitive dependencies are available from the configured package ind ...[truncated 2285 chars]
- Remediation
- ## Remediation Suggestions 1. Pin every direct dependency to a reviewed version rather than installing unconstrained package names. 2. Generate a lock file that includes all transitive dependencies for each supported platform and Python version. 3. Record cryptographic hashes for approved distributions and install with `pip --require-hashes`. 4. Use an explicit trusted package index and disable unintended fallback indexes where feasible. 5. Separate optional ASR backends into individually reviewed dependency groups so users install only the backend they need. 6. Prefer prebuilt, verified wheels and prevent unreviewed source builds in production installation workflows. 7. Add automated dependency scanning and update review procedures before changing locked versions. 8. Update `SKILL.md` and `scripts/transcribe.py` so every installation example references the same locked requirements rather than direct unpinned `pip install` commands. 9. Keep dependency installation separate from normal Skill execution and clearly require user confirmation before installing or updating software. 10. Document model artifact sources and, where supported, verify downloaded model files against published checksums or signed manifests.
