T08 · Insecure Dependencies
- Location
scripts/api_keys_list.py:1- Finding
Unpinned Runtime Dependency Installation
- Content
View full analysis
Vulnerability Details
File Location:
scripts/api_keys_list.py:1-4,scripts/balance.py:1-4,scripts/usage.py:1-4, andSKILL.md:105-107
Vulnerability Type: Unpinned third-party dependency resolved and installed at runtime
Risk Level: MediumVulnerable 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
httpxdependency has no exact version constraint, integrity hash, committed lockfile, or explicitly restricted package source. Consequently,uv runmay 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
- An attacker compromises a future
httpxrelease, one of its transitive dependencies, or the package index used byuv. - The user invokes one of the documented commands, such as
uv run scripts/api_keys_list.py. - Because no exact dependency version ...[truncated 1046 chars]
- An attacker compromises a future
- Remediation
View remediation
Remediation Suggestions
-
Pin
httpxto a reviewed exact version rather than using an unrestricted package declaration:python # /// script # requires-python = ">=3.10" # dependencies = ["httpx==REVIEWED_VERSION"] # /// -
Generate and commit a lockfile that fixes all transitive dependency versions.
-
Require package hashes or another integrity-verification mechanism where supported.
-
Configure
uvto use only an approved package index and prevent fallback to untrusted sources. -
Scan and review dependency updates before changing the pinned version.
-
Prefer installing dependencies into a controlled environment before executing the Skill, rather than resolving packages during every invocation.
-
Run the scripts with minimal local permissions and expose
VENICE_API_KEYonly to the process that requires it. -
Rotate the administrator API key immediately if dependency compromise is suspected.
-
