T08 · Insecure Dependencies
- Location
scripts/requirements.txt:1- Finding
Unpinned Third-Party Dependencies Create a Supply-Chain Risk
- Content
View full analysis
Vulnerability Details
File Location:
scripts/requirements.txt:1-4andinstall.sh:47-49
Vulnerability Type: Unpinned dependency installation without integrity verification
Risk Level: MediumVulnerable Code
scripts/requirements.txt:1-4:text tvscreener>=0.2.0 pandas>=2.0.0 pyyaml>=6.0 pytest>=7.0.0install.sh:47-49:bash # Install dependencies echo "Installing dependencies..." "$PIP" install --no-user -q -r "$REQ_FILE"Technical Analysis
Every dependency uses an unrestricted lower-bound constraint. The installer therefore downloads whichever newer version satisfies the constraint at installation time, including unaudited future releases and changing transitive dependencies.
The installation also lacks package hashes or another integrity-verification mechanism. Python package installation may execute build-system or setup hooks with the privileges of the user running the installer. Consequently, compromise of a direct or transitive dependency could result in local code execution during installation or subsequent imports.
Installing
pytestas a production dependency unnecessarily expands the runtime dependency graph and supply-chain attack surface.Attack Path
- An attacker compromises a permitted direct dependency or one of its transitive dependencies and publishes a malicious version satisfying the declared lower bound.
- A user follows the documented setup procedure and runs
install.sh. pipresolves the latest compatible dependency versions from its configured package index.- Because no exact version or hash is required, the compromised package is accepted.
- Malicious build hooks execute during installation, or malicious package code executes when imported by the Skill.
Impact Assessment
Successful exploitation could execute arbitrary code with the privileges of the user installing or running the Skill. That code could access ...[truncated 316 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin every direct dependency to an exact, reviewed version.
- Generate a lock file that includes all transitive dependencies.
- Record trusted distribution hashes and install with
pip --require-hashes. - Separate development dependencies such as
pytestfrom production dependencies. - Use a controlled package index or repository allowlist where practical.
- Add automated dependency vulnerability and provenance scanning.
- Review and deliberately update the lock file on a defined maintenance schedule rather than resolving arbitrary future versions during installation.
