T08 · Insecure Dependencies
- Location
SKILL.md:69- Finding
Unpinned Third-Party Packages Are Installed from PyPI
- Content
View full analysis
cd ~/.crunch/workspace/competitions/ python -m venv .venv && source .venv/bin/activate pip install crunch-cli jupyter ipykernel --upgrade --quiet --progress-bar=off ``` The competition setup reference also installs competition-specific dependencies without version or integrity constraints: ```bash pip install crunch-cli crunch-synth jupyter ipykernel --upgrade --quiet --progress-bar=off ``` It permits further packages to be selected from external competition documentation: ```markdown Some competitions have their own SDK. Install in step 2: | Competition | Additional Package | |-------------|-------------------| | Synth | `crunch-synth` | | Falcon | `birdgame` | Check the competition's repo README.md for required packages. ``` ### Technical Analysis The installation commands do not pin package versions and do not verify package hashes. The `--upgrade` option explicitly instructs `pip` to select newer available releases rather than a previously reviewed version. Package installation can execute package-controlled build and installation logic with the privileges of the user running the skill. The skill reduces some risk by requiring a virtual environment and limiting normal installations to packages listed in the documentation or competition materials. A virtual environment, however, isolates Python dependencies rather than operating-system privileges: installation hooks still execute as the current user and can access that user's files, credentials, network connections, and writable configuration. The instruction to consult externa ...[truncated 1733 chars]- Remediation
View remediation
`. 2. Maintain a lock file containing all direct and transitive dependencies. 3. Generate and verify cryptographic hashes, and install with `pip --require-hashes`. 4. Remove `--upgrade` from routine setup commands. Upgrades should occur through a separate review and lock-file update process. 5. Maintain an explicit allowlist of reviewed package names and versions within the audited project rather than trusting arbitrary external `PACKAGES.md` or README content. 6. Require explicit user confirmation before installing any package absent from the reviewed lock file. 7. Consider downloading and scanning artifacts in a restricted environment before installation. 8. Run installation with minimal user privileges and without unnecessary credentials in the environment. ]]>
