T08 · Insecure Dependencies
- Location
requirements.txt:3- Finding
Unpinned Third-Party Dependencies Permit Unreviewed Supply-Chain Updates
- Content
View full analysis
=0.19.0 pillow>=10.0.0 numpy>=1.24.0 pillow-heif>=0.13.0 # optional: HEIC/HEIF support (iPhone/iPad). NOTE: GPLv2 licensed ``` `scripts/setup_deps.sh:122-127`: ```bash # Install Python deps if [ ${#MISSING_PY[@]} -gt 0 ]; then echo "" echo "📦 安装 Python 依赖..." pip3 install "${MISSING_PY[@]}" fi ``` `SKILL.md:85-95`: ```bash # Create venv and install dependencies (recommended) python3 -m venv .venv source .venv/bin/activate pip install -r photo-toolkit/requirements.txt # Or use the skill's setup script (checks + installs) bash photo-toolkit/scripts/setup_deps.sh # Before each session, activate venv source .venv/bin/activate ``` ### Technical Analysis The dependency manifest specifies only minimum versions using `>=` and does not provide cryptographic hashes. Consequently, future installations can resolve to package releases that did not exist when the Skill was reviewed. The setup script also installs missing packages by name without exact versions or hash verification. Python package installation may execute package build and installation logic. If a permitted future release is compromised, an upstream maintainer account is taken over, or the configured package index is malicious, installation can execute attacker-controlled code. The absence of a lock file and hashes also makes builds non-reproducible and prevents reliable verification that users receive the reviewed dependency set. The setup script asks for confirmation before installing missing dependencies, which reduces accidental execution, but it does not address package authenticity or version drift. ### Attack Path 1. An attacker compromises a future release of one of the declared packages, its trans ...[truncated 1748 chars]- Remediation
View remediation
