T08 · Insecure Dependencies
- Location
SKILL.md:17- Finding
Unpinned Runtime Dependencies
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:17
Related Location:scripts/overlay.py:15-16
Vulnerability Type: Unpinned third-party runtime dependencies
Risk Level: MediumThe documented execution command installs MoviePy and Pillow without version constraints:
bash uv run --with moviepy --with pillow scripts/overlay.py \ --video base.mp4 \ --output final.mp4 \ --captions scripts/example_captions.json \ --audio music.mp3 \ --audio-start 8 \ --audio-vol 0.5The script also states that these dependencies are installed automatically:
python Dependencies (auto-installed by uv): moviepy, pillowTechnical Analysis
The command uses
uv run --withto resolve and install unspecified versions of MoviePy and Pillow at execution time. The project contains no reviewed lockfile, exact version constraints, or package hashes. Consequently, dependency resolution can produce code that differs from the versions originally reviewed.This creates a supply-chain risk: a compromised package release, maliciously altered upstream distribution, or newly vulnerable dependency version could be installed and imported into the process. Merely being unpinned does not establish that either dependency is currently malicious, but it removes reproducibility and permits the effective third-party code executed by the Skill to change after review.
Attack Path
- A user follows the command documented in
SKILL.md. uvcontacts its configured package index and resolves the current versions ofmoviepy,pillow, and their transitive dependencies.- A compromised or otherwise unsafe dependency version is selected because no exact versions or trusted hashes constrain resolution.
- The dependency is installed into the runtime environment.
- Python imports MoviePy or Pillow while launching
scripts/overlay.py. - Malicious package initialization or reachable dependency code executes with the same operating-system permission ...[truncated 784 chars]
- A user follows the command documented in
- Remediation
View remediation
Remediation Suggestions
-
Declare exact, reviewed versions for MoviePy, Pillow, and all transitive dependencies.
-
Generate and commit a
uv.lockfile, then require locked or frozen dependency resolution during execution. -
Use package hash verification where supported so modified distributions cannot silently replace reviewed artifacts.
-
Replace the ad hoc
--with moviepy --with pillowworkflow with a reproducible project environment, for example:bash uv sync --frozen uv run scripts/overlay.py \ --video base.mp4 \ --output final.mp4 \ --captions scripts/example_captions.json -
Configure
uvto use an explicitly trusted package index and prevent unexpected fallback to untrusted sources. -
Add automated dependency vulnerability and integrity scanning, and update pins through a controlled review process.
-
Document the supported Python version and platform to improve reproducibility across environments.
-
