T08 · Insecure Dependencies
- Location
requirements.txt:1- Finding
Unpinned Third-Party Dependencies Permit Unreviewed Package Upgrades
- Content
View full analysis
Vulnerability Details
File Location:
requirements.txt:1-5
Related Installation Instruction:README.md:13-17
Vulnerability Type: Third-party supply-chain exposure through unbounded dependency versions
Risk Level: MediumVulnerable Code
text qdrant-client>=1.7.0 chromadb>=0.4.18 numpy>=1.24.0 requests>=2.31.0 sentence-transformers>=2.2.2The documented installation command is:
bash pip install -r requirements.txtTechnical Analysis
Every dependency uses only a minimum-version constraint. Consequently, installation may resolve to any later package release, including versions that were not reviewed or tested with this project. The installation is also not protected by package hashes or a committed lock file.
Python package installation can execute package build and installation logic with the privileges of the user running
pip. If an upstream project, release account, distribution artifact, or configured package index is compromised, a malicious later release could be selected without any modification to this repository.There is no evidence that the listed package names are typosquatted or currently malicious. The vulnerability is the absence of reproducible, integrity-verified dependency resolution rather than a confirmed malicious dependency.
Attack Path
- An attacker compromises an upstream dependency release, its publishing credentials, or a package index used by the victim.
- The attacker publishes a malicious version greater than the minimum version accepted by
requirements.txt. - A user follows the documented
pip install -r requirements.txtinstruction. - The resolver selects the compromised release because no upper bound, exact version, lock file, or hash prevents it.
- Malicious package installation or import-time code executes in the user's environment.
Impact Assessment
Exploitation could run arbitrary code ...[truncated 584 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin each direct and transitive dependency to a reviewed exact version using a lock file.
- Generate and verify cryptographic hashes, such as with
pip-compile --generate-hashes, and install withpip install --require-hashes. - Use a trusted, explicitly configured package index or an internally mirrored repository.
- Separate optional dependency groups for Qdrant, Chroma, OpenAI requests, and local sentence-transformer support so users install only what they need.
- Add automated dependency vulnerability and provenance scanning to CI.
- Test dependency upgrades separately and update the lock file only after review.
- Avoid running package installation as root or another privileged account.
