T08 · Insecure Dependencies
- Location
scripts/requirements.txt:1- Finding
Unpinned Third-Party Dependencies Allow Unreviewed Package Updates
- Content
View full analysis
Vulnerability Details
File Locations:
scripts/requirements.txt:1-3SKILL.md:30-34README.en.md:17-23README.md:17-23
Vulnerability Type: Supply-chain risk caused by unconstrained dependency resolution
Risk Level: MediumVulnerable Code
scripts/requirements.txt:1-3:text numpy>=1.26 opencv-python-headless>=4.8 pillow>=10SKILL.md:30-34:bash Install script dependencies only if they are missing: python3 -m pip install -r /path/to/count-go-black-stones/scripts/requirements.txtREADME.en.md:17-23:bash ## Install Dependencies Install only when dependencies are missing: python3 -m pip install -r scripts/requirements.txtREADME.md:17-23:bash ## 安装依赖 只在缺少依赖时安装: python3 -m pip install -r scripts/requirements.txtTechnical Analysis
All three dependencies use minimum-version constraints without upper bounds, exact version pins, or artifact hashes. Consequently,
pipresolves and installs the newest package release that satisfies each constraint at installation time. The effective dependency set can therefore change after the Skill has been reviewed.The package names are established public packages, and the audit found no evidence that their currently published releases are malicious. Nevertheless, the installation procedure does not cryptographically bind installation to reviewed artifacts. If an upstream account, package release, package-index response, or transitive dependency is compromised, a later installation can retrieve code that was never included in this repository or assessed during this audit.
Attack Path
- An attacker compromises an upstream dependency release channel, publishing account, distribution artifact, or relevant transitive dependency.
- A user follows the documented installation command.
pipresolves the latest versions satisfying the unrestricted lower-bound ...[truncated 1294 chars]
- Remediation
View remediation
Remediation Suggestions
-
Replace lower-bound-only constraints with exact versions that have been reviewed and tested:
text numpy==<reviewed-version> opencv-python-headless==<reviewed-version> pillow==<reviewed-version> -
Generate a lock file containing SHA-256 hashes for every direct and transitive distribution artifact.
-
Require hash verification during installation:
bash python3 -m pip install --require-hashes -r scripts/requirements.lock -
Prefer prebuilt wheels from an explicitly configured trusted index, and reject unexpected source distributions where operationally feasible.
-
Install dependencies inside a dedicated, non-privileged virtual environment or container rather than a shared or system-wide Python environment.
-
Introduce a reviewed dependency-update process with automated vulnerability scanning, compatibility tests, and deliberate lock-file regeneration.
-
Document the locked installation command in
SKILL.mdand both README files so users do not bypass the protected dependency set.
-
