T08 · Insecure Dependencies
- Location
install.sh:5- Finding
Unpinned Third-Party Dependencies Are Installed and Executed
- Content
View full analysis
Vulnerability Details
File Location:
install.sh:5;SKILL.md:22-25
Vulnerability Type: Unpinned third-party dependency installation and immediate package execution
Risk Level: MediumVulnerable Code
install.sh:5:bash pip install torch scipy huggingface_hubSKILL.md:22-25:bash pip install pocket-tts # Or use uv for automatic dependency management uvx pocket-tts generate "Hello world"Technical Analysis
The installation script and documentation retrieve third-party Python packages without fixed versions, cryptographic hashes, or a reviewed lockfile. Consequently, the exact code installed can change between executions. The
uvxinstruction is particularly sensitive because it retrieves and immediately executes the resolved package.Python package installation can execute package-controlled build logic, while invoking an installed package executes its runtime code. If a referenced package, one of its transitive dependencies, or the configured package index is compromised, attacker-controlled code could run without any modification to this repository.
This finding does not establish that the currently named packages are malicious. It identifies a supply-chain weakness that makes installation behavior dependent on mutable external package releases.
Attack Path
- An attacker compromises a referenced package, a transitive dependency, or the package distribution account/index used by the victim.
- The attacker publishes a malicious release that remains compatible with the unconstrained dependency specification.
- A user follows
SKILL.mdor runsinstall.sh. piporuvxresolves and downloads the malicious release.- Attacker-controlled code executes during package installation, import, or command invocation.
- The malicious code operates with the permissions and environmental access of the invoking user.
Impact Assessment
Successful exp ...[truncated 531 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin every direct dependency to a reviewed exact version rather than allowing unconstrained resolution.
- Generate and commit a lockfile that records all transitive dependencies.
- Require cryptographic hashes for downloaded artifacts, such as through a hash-locked requirements file and
pip --require-hashes. - Replace direct
uvx pocket-ttsexecution with installation of a reviewed, pinned release followed by explicit execution from an isolated environment. - Install dependencies inside a dedicated virtual environment rather than the user's global Python environment.
- Use a trusted package index and, where feasible, an internal mirror containing approved artifacts.
- Add automated dependency scanning and release-review procedures before updating pins.
- Ensure
pocket-ttsitself is explicitly included in the reviewed dependency manifest, because the current installation script installs supporting libraries but not the package required bycli.py.
