T08 · Insecure Dependencies
- Location
scripts/tv_control.py:1- Finding
Unpinned Runtime Dependencies Permit Supply-Chain Code Execution
- Content
View full analysis
Vulnerability Details
File Location:
scripts/tv_control.py:1-7; execution documented inSKILL.md:29-32andREADME.md:26-28
Vulnerability Type: Unpinned third-party dependencies resolved at runtime
Risk Level: MediumVulnerable Code
python # /// script # requires-python = ">=3.10" # dependencies = [ # "requests", # "wakeonlan", # ] # ///The documented invocation causes
uvto resolve these dependencies:bash uv run {baseDir}/scripts/tv_control.py --action <action> [--value <n>] [--app <name>] [--buttons <buttons>]Technical Analysis
The
requestsandwakeonlandependencies have no exact version constraints, package hashes, or committed lockfile. When the documenteduv runcommand is executed in an environment where these packages are not already locked and cached,uvmay resolve and install whichever compatible releases are available at that time.Consequently, the effective executable code can change without any modification to the reviewed project. If an upstream package, maintainer account, package index, or dependency in the transitive dependency graph is compromised, a malicious release could be selected automatically. Python package installation and import behavior can execute package-controlled code with the privileges of the user running the Skill.
Attack Path
- An attacker compromises a declared package, one of its transitive dependencies, a package maintainer account, or the package distribution channel.
- The attacker publishes a malicious version that satisfies the unconstrained dependency declaration.
- A user or Agent invokes the documented
uv run scripts/tv_control.pycommand in a fresh or newly resolved environment. uvresolves and installs the malicious compatible release.- Malicious package code executes during installation or import when
requestsorwakeonlanis loaded. - The pay ...[truncated 669 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin every direct dependency to an exact reviewed version rather than using unconstrained package names.
- Generate and commit a lockfile that includes the complete transitive dependency graph.
- Require cryptographic hashes for downloaded distributions where the tooling supports hash verification.
- Configure
uvto use an explicitly trusted package index and prevent fallback to unexpected indexes. - Review dependency updates before changing the lockfile and use automated vulnerability and provenance scanning.
- Run the Skill with a minimally privileged account and expose only the environment variables required for TV control.
