T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:55
- Finding
- Unpinned Third-Party Dependency Installation## Vulnerability Details **File Location**: `SKILL.md`, line 55 **Vulnerability Type**: `T08: Insecure Dependencies` **Risk Level**: Medium **Complete Vulnerable Snippet**: ```markdown ## Requirements - `pip install openpyxl` (already installed in workspace) - Node.js QBO client with valid auth token - QBO credentials configured ``` ### Technical Analysis The skill directs users or an executing agent to install `openpyxl` without specifying an exact version, validating package hashes, using a lockfile, or constraining the package source to a trusted repository. The package artifact resolved by this command is mutable and depends on the active `pip` configuration and package-index environment. If the configured index, selected release, package account, or transitive dependency is compromised, following this instruction could install attacker-controlled code. Python packages may execute code during installation through build backends and can execute additional code when imported by the referenced workflow. Although the document states that the package is already installed, it still presents the unpinned installation command as a requirement. The audited project contains no dependency manifest or integrity data that would permit verification of the intended artifact. ### Attack Path 1. An attacker compromises a relevant package release, dependency, package-index account, or package source configured in the victim's environment. 2. A user or AI agent follows the documented `pip install openpyxl` instruction. 3. `pip` resolves and downloads an unverified package artifact because no exact version or cryptographic hash is required. 4. Attacker-controlled code executes during package build or installation, or when the dependency is subsequently imported. 5. The malicious code operates with the privileges of the user running `pip` or the analysis pipeline and can access resources available to that account. ### Impact As ...[truncated 612 chars]
- Remediation
- ## Remediation Suggestions 1. Pin `openpyxl` to a reviewed, exact version rather than allowing mutable latest-version resolution. 2. Store dependencies in a committed requirements or lock file with cryptographic hashes, for example: ```text openpyxl==<reviewed-version> --hash=sha256:<verified-artifact-hash> ``` 3. Install with hash enforcement: ```bash python3 -m pip install --require-hashes -r requirements.txt ``` 4. Explicitly use an approved package index and ensure that untrusted supplemental indexes cannot take precedence. 5. Perform installation in a dedicated virtual environment or similarly isolated runtime under a non-privileged account. 6. Review and lock transitive dependencies as well as the direct dependency. 7. Include the referenced implementation and its dependency manifest in the reviewed package so that imports and runtime behavior can be verified together.
