T08 · Insecure Dependencies
- Location
requirements.txt:1- Finding
Unpinned Third-Party Dependencies Create Supply-Chain Risk
- Content
View full analysis
Vulnerability Details
File Location:
requirements.txt:1-3andSKILL.md:24-27
Vulnerability Type: Unpinned and unhashed package installation
Risk Level: MediumVulnerable Code
requirements.txt:1-3:text beautifulsoup4 requests feedparserSKILL.md:24-27:bash pip install -r "{baseDir}/requirements.txt"Technical Analysis
The Skill instructs users to install three third-party Python packages without exact versions or cryptographic hashes. Consequently, installation resolves whatever package versions are current on the configured Python package index at installation time.
This makes the installed code non-reproducible and means the effective dependency set can change after the Skill has been reviewed. If an upstream package release, transitive dependency, package-index account, or configured package source is compromised, following the documented setup procedure could install attacker-controlled code.
The finding does not establish that any currently published dependency is malicious. The vulnerability is the absence of controls that ensure users install the specific dependency artifacts that were reviewed.
Attack Path
- An attacker compromises a listed dependency, one of its transitive dependencies, an upstream maintainer account, or the package source configured for pip.
- The attacker publishes or serves a malicious version under a dependency name that the unpinned manifest permits.
- A user follows
SKILL.mdand executes:bash pip install -r "{baseDir}/requirements.txt" - Pip resolves and installs the attacker-controlled artifact because no exact version or hash restricts package selection.
- Malicious package behavior may execute during installation or when
daily_news.pyimports the installed package. - The payload runs with the privileges of the account performing installation or executing the Skill.
Impact Assessm
...[truncated 600 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin every direct dependency to a reviewed exact version using
==. - Generate a lock file that also fixes all transitive dependency versions.
- Record cryptographic hashes for every accepted distribution and install with:
bash pip install --require-hashes -r requirements.txt - Obtain packages only from a trusted, explicitly configured package index.
- Review dependency changes before updating the lock file, including transitive changes and package provenance.
- Run dependency installation and the news script in an isolated virtual environment or container under an unprivileged account.
- Add automated dependency vulnerability and integrity checks to the release process.
- Pin every direct dependency to a reviewed exact version using
