T08 · Insecure Dependencies
Warning
- Location
- scripts/api_keys_list.py:1
- Finding
- Unpinned Runtime Dependency Installation## Vulnerability Details **File Location**: `scripts/api_keys_list.py:1-4`, `scripts/balance.py:1-4`, `scripts/usage.py:1-4`, and `SKILL.md:105-107` **Vulnerability Type**: Unpinned third-party dependency resolved and installed at runtime **Risk Level**: Medium ### Vulnerable Code Each Python script contains the following PEP 723 dependency declaration: ```python # /// script # requires-python = ">=3.10" # dependencies = ["httpx"] # /// ``` The documented execution model confirms that this dependency is installed automatically: ```markdown This skill uses `uv run` which automatically installs Python dependencies (httpx) via [PEP 723](https://peps.python.org/pep-0723/) inline script metadata. No manual Python package installation required - `uv` handles everything. ``` ### Technical Analysis The `httpx` dependency has no exact version constraint, integrity hash, committed lockfile, or explicitly restricted package source. Consequently, `uv run` may resolve a different dependency release after the Skill has been reviewed. This creates a supply-chain risk because dependency installation and import occur in a process that can access `VENICE_API_KEY`. The credential is documented as an administrator API key capable of accessing billing information and API-key metadata. A compromised future release or compromised package-distribution channel could therefore introduce code that executes with the user's process permissions. The package name is legitimate and there is no evidence in the audited project that the currently resolved package is malicious. The vulnerability is the absence of reproducible and integrity-verified dependency resolution. ### Attack Path 1. An attacker compromises a future `httpx` release, one of its transitive dependencies, or the package index used by `uv`. 2. The user invokes one of the documented commands, such as `uv run scripts/api_keys_list.py`. 3. Because no exact dependency version ...[truncated 1046 chars]
- Remediation
- ## Remediation Suggestions 1. Pin `httpx` to a reviewed exact version rather than using an unrestricted package declaration: ```python # /// script # requires-python = ">=3.10" # dependencies = ["httpx==REVIEWED_VERSION"] # /// ``` 2. Generate and commit a lockfile that fixes all transitive dependency versions. 3. Require package hashes or another integrity-verification mechanism where supported. 4. Configure `uv` to use only an approved package index and prevent fallback to untrusted sources. 5. Scan and review dependency updates before changing the pinned version. 6. Prefer installing dependencies into a controlled environment before executing the Skill, rather than resolving packages during every invocation. 7. Run the scripts with minimal local permissions and expose `VENICE_API_KEY` only to the process that requires it. 8. Rotate the administrator API key immediately if dependency compromise is suspected.
