T08 · Insecure Dependencies
- Location
SKILL.md:65- Finding
Unpinned Python Dependency Creates Mutable Supply-Chain Exposure
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, line 65
Vulnerability Type: Unpinned third-party dependency
Risk Level: MediumVulnerable Code Snippet:
markdown | requests | Python library | Required | pip install requests |Technical Analysis
The installation instruction retrieves
requestswithout specifying an approved version, validating package hashes, or using a locked dependency manifest. Consequently, the installed package and its transitive dependencies may change between executions even when the Skill itself has not changed.This does not establish that the legitimate
requestspackage is malicious. It creates a conditional supply-chain risk: if an upstream release, transitive dependency, configured package index, or package-index account is compromised, following the documented command could install attacker-controlled code. Python packages and their installation artifacts may execute code during installation or when imported.Although the package name is established and not an apparent typosquat, version and artifact verification are still required for reproducible, reviewable installation.
Attack Path
- An attacker compromises an upstream package release, a transitive dependency, or the package source configured in the execution environment.
- The Agent or user follows the Skill setup instructions and runs
pip install requests. pipresolves the current mutable package and dependency versions without checking them against an approved lock file or expected hashes.- The compromised artifact is installed.
- Attacker-controlled code executes during installation or when the dependency is subsequently imported by the Skill's Python processes.
This path is conditional upon compromise or manipulation of the dependency supply chain; the audited project does not itself contain a malicious package or payload.
Impact Assessment
Malicious dependency code would ...[truncated 682 chars]
- Remediation
View remediation
Remediation Suggestions
-
Replace the unrestricted command with a reviewed, version-pinned dependency manifest, such as
requirements.txt. -
Pin both direct and transitive dependencies to exact versions.
-
Record and enforce artifact hashes using a command such as:
bash python3 -m pip install --require-hashes -r requirements.txt -
Generate and review the lock file with a dependency-locking tool, and update it through a controlled review process.
-
Explicitly use an approved package index and prohibit untrusted extra indexes.
-
Install dependencies inside an isolated virtual environment rather than the system Python environment.
-
Do not run package installation with root or administrator privileges.
-
Add automated dependency vulnerability and integrity scanning to release review.
-
