T08 · Insecure Dependencies
- Location
scripts/ai-generate.py:1- Finding
Automatically Installed Dependencies Are Not Reproducibly Pinned
- Content
View full analysis
=3.10" # dependencies = [ # "requests>=2.31", # "pillow>=10.0", # ] # /// ``` Other scripts use the same automatically resolved pattern, including broad constraints such as: ```python # dependencies = [ # "ultralytics>=8.3.0", # "opencv-python-headless>=4.8", # "numpy<2", # "pillow>=10.0", # "torch>=2.0", # "torchvision>=0.15", # ] ``` The automatic installation behavior is explicitly documented at `SKILL.md:43`: ```markdown All scripts use `uv run` for zero-setup execution — dependencies are automatically installed on first run. ``` ### Technical Analysis The scripts rely on PEP 723 inline dependency metadata and execute through `uv run`. Dependencies use lower-bound or broad range constraints rather than exact reviewed versions. The project contains no audited lockfile or package hashes. Consequently, the effective code executed by a command can change after the Skill itself has been reviewed. A newly published version satisfying a constraint such as `requests>=2.31` or `ultralytics>=8.3.0` may be selected on a clean installation. Third-party package installation and import can execute code with the same privileges as the user invoking the Skill. This is a supply-chain weakness rather than evidence that the currently named packages are malicious. ### Attack Path 1. An allowed dependency release or its package-distribution account is compromised. 2. The attacker publishes a malicious version that satisfies one of the broad dependency ...[truncated 796 chars]- Remediation
View remediation
