T08 · Insecure Dependencies
- Location
SKILL.md:13- Finding
Unpinned Third-Party Python Dependencies
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:13-17
Vulnerability Type: Supply-chain risk from mutable dependency resolution
Risk Level: MediumVulnerable Code
yaml install: - id: pip kind: pip packages: ["numpy", "opencv-python-headless", "scikit-image", "scipy", "pyyaml"]Technical Analysis
The skill declares five Python packages without exact versions or cryptographic hashes. Consequently, installation resolves whatever compatible releases the package registry serves at that time rather than the versions reviewed and tested by the project.
This creates a supply-chain exposure: a compromised upstream release, compromised package publisher account, malicious registry mirror, or dependency-resolution manipulation could cause installation of code that is not part of this audited artifact. Python packages may execute code during installation and are subsequently imported by the skill scripts.
No evidence indicates that the currently named packages are malicious. The finding concerns the absence of dependency integrity controls.
Attack Path
- An attacker compromises an upstream package release, publisher account, configured package index, or dependency in the transitive dependency graph.
- A user installs the skill using the declared pip installation configuration.
- Pip resolves the mutable, unpinned dependency to the attacker-controlled release.
- Malicious code executes during package installation or when
vtl_probe.pyorvtl_regen.pyimports the affected package. - The payload operates with the privileges and accessible resources of the user or service running the installation or skill.
Impact Assessment
Successful exploitation could permit arbitrary code execution with the privileges of the installer or skill runtime. The accessible scope may include the user's files, images supplied for analysis, process environment, credentials available to that account, and network resources reachable from ...[truncated 147 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin every direct dependency to an exact, reviewed version.
- Generate a lock file that also fixes all transitive dependency versions.
- Require cryptographic hashes during installation, for example through a hash-locked requirements file and pip's
--require-hashesoption. - Configure installation to use a trusted package index and reject unexpected fallback indexes.
- Regularly scan locked dependencies for known vulnerabilities and update them through a controlled review process.
- Test the complete locked dependency set before publishing a new skill version.
- Where supported by the skill distribution mechanism, replace the inline mutable package list with a reference to the reviewed lock or requirements file.
