T08 · Insecure Dependencies
- Location
SKILL.md:82- Finding
Installation Instructions Include an Unnecessary and Untrusted PyPI Dependency
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:82
Vulnerability Type: Supply-chain exposure through an unnecessary and unpinned dependency
Risk Level: MediumVulnerable Code:
text - Deps: `pip install rdkit-pypi requests pandas sqlite3 spacy scispacy` (assume chemistry env).Technical Analysis
The documented installation command instructs users to install multiple dependencies without pinned versions or cryptographic hashes. It also instructs users to install
sqlite3from PyPI even thoughsqlite3is included in Python's standard library and does not need to be installed separately.Installing an unnecessary package with the name of a standard-library module creates avoidable supply-chain exposure. If the referenced PyPI distribution is malicious, compromised, or later replaced, its build or installation process could execute attacker-controlled code. The absence of exact versions and hashes also permits dependency contents to change after this skill has been audited.
The command is documentation rather than an automatically executed code path, so exploitation requires a user or automation process to follow the installation instructions.
Attack Path
- A user prepares the environment by following the dependency command in
SKILL.md. pipresolves the unpinnedsqlite3distribution or another compromised dependency from the configured package index.- The package supplies malicious build-system, installation, or imported runtime code.
- The malicious code executes with the privileges of the user or service account running
pip. - The attacker may access files, credentials, network resources, and agent data available to that account.
Impact Assessment
Successful exploitation can provide arbitrary code execution with the privileges of the environment performing the installation. The scope may include the project's files, the user's home directory, accessible API crede ...[truncated 185 chars]
- A user prepares the environment by following the dependency command in
- Remediation
View remediation
Remediation Suggestions
- Remove
sqlite3from the installation command because it is part of Python's standard library. - Define dependencies in a lock file or requirements file with exact versions.
- Require cryptographic hashes, such as through
pip install --require-hashes. - Review and approve all direct and transitive dependencies before deployment.
- Install dependencies inside an isolated virtual environment using a trusted package index.
- Add automated dependency vulnerability and provenance checks to the release process.
- Remove
