T08 · Insecure Dependencies
- Location
SKILL.md:10- Finding
Unpinned Third-Party Dependencies Create a Supply-Chain Risk
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:10-17andSKILL.md:123-125
Vulnerability Type: Unpinned dependency installation
Risk Level: MediumVulnerable Code
json "install": [ { "id": "pip-deps", "kind": "python", "package": "httpx pandas openpyxl", "label": "Install Python dependencies" } ]bash pip3 install httpx pandas openpyxl --userTechnical Analysis
The Skill installs
httpx,pandas, andopenpyxlwithout fixed versions or cryptographic integrity hashes. Consequently, each installation resolves whatever versions are available from the configured Python package index at that time.This prevents reproducible dependency resolution and exposes users to upstream package compromise, malicious replacement releases, dependency-resolution changes, and unexpected security regressions. The use of
--useralso places these packages in the user's Python environment rather than an isolated project environment, potentially affecting other Python applications run by the same account.No evidence indicates that the currently named packages are malicious. The vulnerability is the absence of controls ensuring that the versions installed in the future are the versions that were reviewed.
Attack Path
- An attacker compromises an upstream package account, package distribution channel, or package-index configuration.
- The attacker publishes a malicious version of one of the unpinned packages or a transitive dependency.
- A user installs the Skill dependencies using the documented command or automatic installation metadata.
pipresolves and installs the attacker-controlled release.- Malicious installation or runtime code executes with the privileges of the user installing or invoking the Skill.
Impact Assessment
Successful exploitation could execute arbitrary Python code with the installing user's privileges. This may permit ...[truncated 443 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin every direct dependency to a reviewed, exact version, such as
httpx==X.Y.Z. - Generate a lock file that also fixes all transitive dependency versions.
- Require cryptographic hashes during installation, for example with a hash-locked requirements file and
pip install --require-hashes. - Install dependencies in a dedicated virtual environment rather than with
--user. - Use a trusted package index and prevent untrusted index URLs from overriding dependency resolution.
- Add automated dependency vulnerability and provenance scanning to the release process.
- Review and deliberately update the lock file rather than automatically consuming newly published releases.
- Pin every direct dependency to a reviewed, exact version, such as
