T08 · Insecure Dependencies
- Location
requirements.txt:1- Finding
Unpinned Third-Party Dependencies Create Supply-Chain Risk
- Content
View full analysis
Vulnerability Details
File Location:
requirements.txt:1-9; installation instructions atSKILL.md:236andSKILL.md:293
Vulnerability Type: Unpinned dependency installation
Risk Level: MediumVulnerable Code
text biopython dataclasses numpy pandas pydantic rdkit requests rich tabulateThe documented installation command resolves these unconstrained dependencies:
bash pip install -r requirements.txtTechnical Analysis
Every dependency is specified without an exact version or integrity hash. Each installation can therefore resolve a different release from the configured package index. This prevents reproducible security review and permits newly published, compromised, or unexpectedly incompatible releases to be selected without any project change.
Python package installation may execute package build logic with the privileges of the user running
pip. Several declared packages are not imported by the executable, which unnecessarily expands the number of upstream projects and transitive dependencies that must remain trustworthy. Thedataclassesbackport is also unnecessary under the documented Python 3.8-or-newer requirement.No evidence establishes that any currently resolved package is malicious. The confirmed issue is the absence of version and integrity controls around executable third-party components.
Attack Path
- A user or automation system follows the installation instructions in
SKILL.md. pipresolves the unconstrained names against its configured package index.- An upstream package account, release, distribution artifact, or transitive dependency is compromised, or an unsafe future release becomes the selected version.
- The malicious or unsafe artifact is downloaded because no reviewed version or hash is enforced.
- Package build or installation logic executes, or malicious code runs when the installed module is imported.
...[truncated 569 chars]
- A user or automation system follows the installation instructions in
- Remediation
View remediation
Remediation Suggestions
- Remove dependencies that are not used by
scripts/main.py. - Remove the
dataclassesbackport when Python 3.8 or newer is required. - Pin every direct and transitive dependency to a reviewed version through a generated lock file.
- Record cryptographic hashes for every approved distribution and install with
pip --require-hashes. - Prefer binary wheels from a controlled index and disable unexpected source builds where practical.
- Run dependency vulnerability and license scanning in CI.
- Use a dedicated virtual environment and avoid installing packages with administrative privileges.
- Establish a controlled update process that reviews and tests dependency changes before refreshing the lock file.
- Remove dependencies that are not used by
