T08 · Insecure Dependencies
- Location
scripts/requirements.txt:4- Finding
Unpinned Third-Party Dependencies Create a Supply-Chain Risk
- Content
View full analysis
=1.18.0 yfinance>=1.0.0 tushare>=1.4.0 pandas>=2.0.0 numpy>=1.24.0 matplotlib>=3.7.0 pymupdf>=1.23.0 fpdf2>=2.7.0 python-docx>=1.0.0 Pillow>=10.0.0 markdown>=3.6.0 requests>=2.31.0 ``` ```bash # scripts/setup.sh:75 $PIP install $INDEX_URL -r requirements.txt ``` ### Technical Analysis Every dependency is specified using an open-ended minimum version. Consequently, setup installs whichever newer release the dynamically selected package index serves at execution time. The project does not include a lock file, exact version pins, package hashes, or signature verification. Python packages can execute code during installation and whenever imported. Several of these dependencies are imported automatically by the Skill's scripts. A compromised upstream release, compromised mirror, or malicious transitive dependency could therefore introduce executable code after this Skill has already passed review. The setup script also dynamically selects between PyPI and third-party mirrors. Although the configured mirrors are recognizable services, changing the package source dynamically increases reproducibility and supply-chain trust concerns. ### Attack Path 1. An attacker compromises a listed package, one of its transitive dependencies, or a selected package index. 2. The attacker publishes or serves a malicious release satisfying the open-ended `>=` constraint. 3. A user follows the documented setup process and runs `scripts/setup.sh`. 4. `pip` resolves and installs the malicious release without checking a reviewed hash. 5. Malicious code executes during installation or when the affected module is imported by a Skill script. ### Impact Assessment Successfu ...[truncated 487 chars]- Remediation
View remediation
