T08 · Insecure Dependencies
- Location
requirements.txt:1- Finding
Unpinned and Unverified Third-Party Dependencies
- Content
View full analysis
Vulnerability Details
File Location:
requirements.txt:1-3; related installation declarations inSKILL.md:21-30,SKILL.md:62-67, andREADME.md:19-28
Vulnerability Type: Supply-chain risk caused by mutable dependency resolution
Risk Level: MediumVulnerable Code
requirements.txt:1-3:text faster-whisper>=0.10.0 torch>=2.0.0 numpy>=1.24.0SKILL.md:21-30:yaml python_packages: - faster-whisper - torch install: - id: pip kind: pip packages: - faster-whisper - torch label: Install faster-whisper and PyTorchSKILL.md:62-67:bash # Install dependencies pip install faster-whisper torch # Verify GPU is available python -c "import torch; print(f'CUDA available: {torch.cuda.is_available()}')"README.md:19-28:bash pip install faster-whisper torchbash python -c "import torch; print(f'CUDA available: {torch.cuda.is_available()}')"Technical Analysis
The project installs third-party packages without exact version pins, artifact hashes, or a reviewed lockfile. The
>=constraints allow any future version satisfying the lower bound, while the documented and skill-managedpip installcommands impose no version constraints at all.Pip may execute package build backends or installation hooks and subsequently loads package code when
transcribe.pyimportsfaster_whisperandtorch. Therefore, the effective code executed by the skill can change over time without any modification to this repository. A compromised upstream release, package-index account, configured mirror, or transitive dependency could introduce attacker-controlled code.This finding does not establish that the currently named packages are malicious. It identifies an unsafe and non-reproducible dependency installation process that creates a viable supply-chain exploitation ...[truncated 1512 chars]
- Remediation
View remediation
Remediation Suggestions
- Replace lower-bound and unconstrained dependencies with exact versions reviewed and tested by the maintainers.
- Generate and commit a reproducible lockfile that includes all transitive dependencies for each supported Python and platform configuration.
- Record cryptographic hashes for accepted distributions and install with pip's
--require-hashesoption. - Update the installation declarations in
SKILL.mdand the commands inREADME.mdso they use the reviewed lockfile rather than installing mutable package names directly. - Prefer binary wheels from an explicitly configured trusted index where practical, and prevent unexpected fallback to untrusted extra indexes or mirrors.
- Install dependencies in an isolated virtual environment under a non-privileged account. Do not run pip as root or from an account holding unnecessary secrets.
- Add automated dependency vulnerability and provenance checks to CI, including review of lockfile changes and transitive dependency updates.
- Establish a controlled update process that tests and approves new dependency versions before updating pins and hashes.
- Where supported, verify package signatures or provenance attestations and retain a software bill of materials for released skill versions.
