T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:58
- Finding
- Unpinned Third-Party Package Installation Exposes Wallet-Backed Operations to Supply-Chain Risk## Vulnerability Details **File Location**: `SKILL.md:58`, `SKILL.md:167`, `references/api.md:5`, and `scripts/validate_params.sh:8` **Vulnerability Type**: Unpinned third-party dependency installation **Risk Level**: Medium ### Complete Code Snippets `SKILL.md:57-58`: ```bash pip install sports-skills[polymarket] ``` `SKILL.md:166-167`: ```text Solution: Run `pip install sports-skills[polymarket]` and set `POLYMARKET_PRIVATE_KEY` environment variable ``` `references/api.md:5`: ```markdown - **py_clob_client** (Python SDK): Trading operations (create/cancel orders, view trades). Requires `pip install sports-skills[polymarket]` and a wallet private key. No CLI binary needed. ``` `scripts/validate_params.sh:6-9`: ```bash TRADING_COMMANDS="create_order market_order cancel_order cancel_all_orders get_orders get_user_trades" if echo "$TRADING_COMMANDS" | grep -qw "$COMMAND"; then echo "WARNING: $COMMAND requires py_clob_client and a wallet. Install with: pip install sports-skills[polymarket]. Set POLYMARKET_PRIVATE_KEY=0x... in .env or call configure(private_key=...)." fi ``` ### Technical Analysis The project repeatedly instructs users to install `sports-skills[polymarket]` without pinning a reviewed version, verifying package hashes, or providing a dependency lockfile. Consequently, the resolved package and its transitive dependencies may change after this Skill has been reviewed. Python package installation can execute package-controlled build logic, while installed package code executes with the privileges of the invoking user. The risk is elevated because the documented trading workflow places a wallet private key in `POLYMARKET_PRIVATE_KEY` or passes it to `configure(private_key=...)`. The implementation that handles that key is not included in the audited project, so its behavior could not be verified. This finding does not establish that the current package is malicious. It establishes that ...[truncated 1552 chars]
- Remediation
- ## Remediation Suggestions 1. Pin `sports-skills` to a specifically reviewed version, for example: ```bash python -m pip install 'sports-skills[polymarket]==<reviewed-version>' ``` 2. Publish a lockfile or constraints file that pins all transitive dependencies. 3. Require package hash verification using `--require-hashes` and hashes obtained through a trusted release process. 4. Document the package's authoritative registry entry, source repository, maintainer identity, and release-signing or provenance information. 5. Audit the exact `sports-skills` and `py_clob_client` versions responsible for private-key handling before recommending wallet-backed operations. 6. Install and run trading functionality in an isolated virtual environment or container under a non-privileged account. 7. Avoid exposing a high-value wallet key broadly through the process environment. Use a dedicated, least-privileged trading wallet with limited funds and securely managed credentials. 8. Add dependency vulnerability and provenance checks to the release process, and require explicit review before updating pinned versions.
