T08 · Insecure Dependencies
- Location
Scripts/requirements.txt:1- Finding
Unpinned Third-Party Dependencies Create a Supply-Chain Risk
- Content
View full analysis
Vulnerability Details
File Location:
Scripts/requirements.txt, lines 1-5; installation is directed bySKILL.md, lines 30-31
Vulnerability Type: Unpinned and unhashed third-party dependencies
Risk Level: MediumVulnerable code:
text yfinance pandas lxml tqdm requestsThe corresponding installation instruction in
SKILL.mdis:markdown 2. If dependencies are missing, install them from `Scripts/requirements.txt`.Technical Analysis
Every dependency is specified without an exact version or integrity hash. Consequently, package resolution may select different releases and transitive dependencies each time the skill is installed. The installed code has not necessarily undergone the same review as the audited project.
Python package installation can execute package-controlled build logic, while subsequent imports execute installed module code. If an upstream release, package account, distribution artifact, package index, or transitive dependency is compromised, malicious code could execute under the identity running the installation or analyzer. Unintentional breaking changes could also affect the integrity of generated financial results.
No evidence was found that the currently named packages are malicious. The vulnerability is the absence of controls ensuring that installations reproduce a reviewed dependency set.
Attack Path
- The skill runs in an environment where one or more required packages are unavailable.
- The agent follows
SKILL.mdand installs packages fromScripts/requirements.txt. - The package resolver retrieves the latest dependency versions and their transitive dependencies rather than a reviewed, fixed set.
- An attacker who has compromised an upstream package release, maintainer account, distribution artifact, or dependency serves malicious package code.
- The malicious code executes during package build or installation, or when `analyzer. ...[truncated 753 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin every direct dependency to an exact, reviewed version, for example with
package==x.y.z. - Generate a lock file that fixes all transitive dependencies, using a tool such as
pip-tools, Poetry, or an equivalent controlled dependency-management system. - Record cryptographic hashes for all resolved distributions and install with hash verification, such as
pip install --require-hashes -r requirements.txt. - Prefer reviewed binary wheels from an explicitly configured trusted package index. Disable unintended extra indexes to reduce dependency-confusion exposure.
- Install packages inside a dedicated, non-privileged virtual environment rather than globally or as an administrator.
- Add automated dependency vulnerability and provenance checks to the release process.
- Update dependencies only through a controlled review process that regenerates the lock file and hashes, runs tests, and reviews security advisories.
- Pin every direct dependency to an exact, reviewed version, for example with
