T08 · Insecure Dependencies
- Location
requirements.txt:1- Finding
Unpinned Third-Party Dependencies Permit Unreviewed Supply-Chain Changes
- Content
View full analysis
Vulnerability Details
File Location:
requirements.txt:1-2andSKILL.md:162
Vulnerability Type:T08: Insecure Dependencies
Risk Level: MediumVulnerable code in
requirements.txt:1-2:text pandas rdkitRelated installation instruction in
SKILL.md:162:text pip install rdkit pandasTechnical Analysis
The project declares
pandasandrdkitwithout exact versions or package hashes. The documented installation command likewise installs whichever releases the configured package index resolves at installation time.Consequently, installations are not reproducible and may consume dependency releases that were never reviewed with this skill. The declaration also fails to enforce the RDKit version expectation documented elsewhere in
SKILL.md. If a package index, package release, maintainer account, or dependency in the transitive dependency graph is compromised, installation or import-time code from the affected package could execute locally.This finding does not establish that the currently published
pandasorrdkitpackages are malicious. The vulnerability is the absence of controls that bind installation to reviewed artifacts.Attack Path
- An operator follows the documented command or installs packages from
requirements.txt. pipqueries the operator's configured package index and dynamically resolves package versions and transitive dependencies.- A compromised, substituted, or unexpectedly incompatible release is selected because no exact versions or integrity hashes constrain resolution.
- Package installation hooks, native components, or import-time initialization execute when the dependency is installed or imported by
scripts/main.py. - Malicious code in such a package executes with the permissions of the user running the installation or skill.
Exploitation therefore requires control over, or compromise of, an applicable package artif ...[truncated 611 chars]
- An operator follows the documented command or installs packages from
- Remediation
View remediation
Remediation Suggestions
- Pin every direct dependency to an exact, reviewed version, for example:
text pandas==<reviewed-version> rdkit==<reviewed-version> - Generate a lock file containing resolved transitive dependencies and cryptographic hashes using an appropriate dependency-management tool.
- Require hash verification during installation, such as
pip install --require-hashes -r requirements.txt. - Use only trusted, explicitly configured package indexes and disable unneeded supplemental indexes to reduce substitution risks.
- Run dependency vulnerability and license scanning against the complete locked dependency graph before release.
- Update
SKILL.mdso its installation command uses the locked requirements file rather than unconstrained package names. - Perform dependency installation and skill execution in a least-privileged virtual environment, container, or sandbox without unnecessary credentials.
- Establish a controlled update process in which dependency changes are reviewed, tested, and accompanied by regenerated hashes.
- Pin every direct dependency to an exact, reviewed version, for example:
