T08 · Insecure Dependencies
- Location
scripts/requirements.txt:4- Finding
Unpinned and Unnecessary Third-Party Dependencies Create Supply-Chain Exposure
- Content
View full analysis
=2.0.0 # Semantic Scholar search semanticscholar>=0.8.0 # PubMed search (via BioPython) biopython>=1.81 # HTTP requests requests>=2.31.0 # Optional: For enhanced parsing beautifulsoup4>=4.12.0 lxml>=4.9.0 ``` The documentation also recommends installing additional unconstrained packages: ```bash pip install arxiv scholarly pubmed-parser semanticscholar requests ``` This instruction appears at `SKILL.md:16`, `SKILL.md:21`, `SKILL.md:562`, and `SKILL.md:567`. ### Technical Analysis Every dependency uses an open-ended lower-bound constraint rather than an exact, reviewed version. A future release satisfying these constraints will be accepted automatically. No package hashes or lock file are supplied to verify artifact integrity. The documentation additionally directs users to install `scholarly` and `pubmed-parser`, although the audited implementation does not import or require those packages. The requirements file similarly includes `beautifulsoup4` and `lxml` without corresponding use in `scripts/research.py`. These unnecessary packages increase the number of maintainers, release processes, and transitive dependencies that must remain trustworthy. Python packages may execute code during installation or when imported. Consequently, compromise of an accepted package release or its distribution account could introduce code that runs with the permissions of the user installing or invoking this Skill. ### Attack Path 1. An attacker compromises the release infrastructure or publisher account of a listed package, or otherwise causes a malicious version to be distributed through the configured package index. 2. The malicious version remains compatible with the open-ended `>=` constraint, or the user installs one of the unconstrained packages ...[truncated 909 chars]- Remediation
View remediation
