T08 · Insecure Dependencies
- Location
pyproject.toml:1- Finding
Unpinned Dependencies Allow Mutable Supply-Chain Resolution
- Content
View full analysis
=61", "wheel"] build-backend = "setuptools.build_meta" [project] name = "infinity-router" version = "2.1.0" description = "Unlimited free AI routing via OpenRouter" readme = "README.md" license = { text = "MIT" } requires-python = ">=3.10" dependencies = [ "requests>=2.31.0", ] ``` `install.sh:59-62`: ```bash # ── 3. Install package ──────────────────────────────────────────────────────── info "Installing infinity-router into venv…" "$VENV_DIR/bin/pip" install --quiet --upgrade pip "$VENV_DIR/bin/pip" install --quiet -e "$INSTALL_DIR" ``` ### Technical Analysis The project defines only lower bounds for `setuptools` and `requests`, leaves `wheel` entirely unconstrained, and does not provide a lockfile or package hashes. The installation script also upgrades `pip` automatically. Consequently, installation resolves mutable package versions from pip's configured package indexes at installation time. The exact installed code can therefore differ from the code reviewed during this audit. Python build-system dependencies are particularly sensitive because their code may execute while building or installing the package. This is not evidence that the currently named packages are malicious. The issue is that the installation process does not guarantee dependency identity or reproducibility. ### Attack Path 1. An attacker compromises a configured package index, dependency release, maintainer account, or package-distribution path. 2. The attacker publishes a version satisfying `setuptools>=61`, `requests>=2.31.0`, or the unconstrained `wheel` requirement. 3. A user runs `install.sh`. 4. Pip resolves and downloads the attacker-controlled version because no exact version or h ...[truncated 778 chars]- Remediation
View remediation
