T08 · Insecure Dependencies
- Location
SKILL.md:274- Finding
Unpinned Third-Party Python Dependencies
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 274–275
Vulnerability Type: Supply-chain risk from unpinned dependencies
Risk Level: MediumComplete Code Snippet:
markdown | openpyxl | Python library | Required | `pip install openpyxl` | | pandas | Python library | Optional | `pip install pandas` |Technical Analysis
The Skill directs the agent to install
openpyxland optionallypandaswithout pinning reviewed versions, validating package hashes, supplying a lockfile, or explicitly restricting resolution to a trusted package index. Consequently, each installation can resolve mutable registry content that may differ from the version assessed during development or audit.Package installation and later imports can execute third-party code with the privileges of the agent process. If an upstream release or package-distribution account is compromised, an unsafe future version could enter the environment without any change to this repository. The evidence does not establish that either named package is currently malicious; the finding concerns the unsafe dependency-resolution procedure.
Attack Path
- A user invokes the Skill in an environment where the required packages are unavailable.
- The agent follows
SKILL.mdand runspip install openpyxlorpip install pandas. pipresolves the latest matching package and transitive dependencies from its configured registry because no versions or hashes are specified.- If a resolved release or registry response has been compromised, malicious package code is installed.
- Installation hooks or a subsequent Python import execute that code under the agent process's account.
This path requires compromise or unsafe configuration of the external package supply chain; the audited project does not itself retrieve a known malicious payload.
Impact Assessment
A compromised dependency could obtain the same privileges as the us ...[truncated 515 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin each direct dependency to a specifically reviewed version, such as
openpyxl==<reviewed-version>. - Pin transitive dependencies through a generated lockfile rather than relying only on top-level constraints.
- Require package hashes, for example with a requirements file installed using
pip install --require-hashes -r requirements.txt. - Explicitly use an approved package index or an internally controlled mirror and disable unintended extra indexes.
- Install dependencies in an isolated virtual environment or restricted container under a non-privileged account.
- Scan locked dependencies for known vulnerabilities and review updates before changing pinned versions.
- Prevent dependency installation during normal Skill execution where possible; prepare and verify the runtime environment in advance.
- Pin each direct dependency to a specifically reviewed version, such as
