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, lines 1-2
Vulnerability Type: Unpinned third-party dependencies
Risk Level: MediumVulnerable Code
text rich PyYAMLThe installation of this file is documented in
SKILL.md, lines 115-119:bash pip install -r scripts/requirements.txtTechnical Analysis
Both third-party dependencies are specified without exact versions or integrity hashes. As a result, each installation resolves whichever compatible releases are available from pip's configured package index at that time.
This makes installations non-reproducible and prevents verification that users receive dependency artifacts reviewed by the project maintainers. If a dependency release or configured package source is compromised, the installation may introduce attacker-controlled package code. The application subsequently imports both dependencies:
python import yaml from rich.console import Console from rich.table import Table from rich.text import TextMalicious package code could therefore execute during package installation or when the application imports the affected module.
Attack Path
- An attacker compromises a dependency release, its distribution account, or a package source configured for pip.
- The attacker publishes or serves a malicious version of
richorPyYAML. - A user follows the documented installation command:
bash pip install -r scripts/requirements.txt - Because no version or artifact hash is enforced, pip resolves and installs the attacker-controlled release.
- Malicious code executes during installation or when
check_quality.pyimports the package. - The payload operates with the privileges of the user or automation account running pip or the quality checker.
Impact Assessment
Successful exploitation could provide arbitrary code execution under the installing or executing account. The resulting access is limited by that account's op ...[truncated 313 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin each dependency to an explicitly reviewed version:
text rich==<reviewed-version> PyYAML==<reviewed-version> - Generate and verify cryptographic hashes for all packages and transitive dependencies, then install with:
bash pip install --require-hashes -r scripts/requirements.txt - Use a lock-file workflow such as
pip-toolsto capture exact transitive dependency versions. - Configure pip to use a trusted package index or an internally controlled dependency mirror.
- Add automated dependency vulnerability scanning and periodic review of proposed upgrades.
- Perform installations in an isolated virtual environment with the minimum required privileges; never install project dependencies as an administrator or root user.
- Pin each dependency to an explicitly reviewed version:
