T08 · Insecure Dependencies
- Location
SKILL.md:126- Finding
Unpinned Third-Party Dependencies Create a Supply-Chain Execution Risk
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 126-136
Vulnerability Type: Unpinned dependency installation from mutable package repositories
Risk Level: MediumVulnerable Code Snippet:
bash ### Required (pip) ```bash pip install openpyxlOptional (better extraction quality)
bash pip install pdfminer.six # Better PDF text extraction pip install ofxparse # Better OFX/QFX parsing brew install tesseract # Image receipt OCR (JPG/PNG)text ### Technical Analysis The Skill instructs the Agent to install third-party packages without fixed versions, cryptographic hashes, or a dependency lockfile. These commands resolve mutable package versions from external repositories at installation time. Python package installation may execute package-controlled build or installation logic. Homebrew packages and their dependencies also introduce externally maintained executable components. If an upstream package, maintainer account, package repository, or transitive dependency is compromised, following these instructions could execute attacker-controlled code under the privileges of the user running the Agent. The audit found no evidence that the named packages are currently malicious. The vulnerability is the absence of controls that ensure the installed artifacts are the same reviewed versions on every installation. ### Attack Path 1. An attacker compromises a listed package, one of its transitive dependencies, its maintainer account, or the associated distribution channel. 2. The attacker publishes a malicious package version that is accepted by the unconstrained installation command. 3. The Agent follows `SKILL.md` and runs `pip install` or `brew install`. 4. The package manager retrieves the malicious or compromised release because no version or artifact hash is enforced. 5. Package installation logic or the installed component executes with the invoking user's p ...[truncated 1253 chars]- Remediation
View remediation
Remediation Suggestions
- Pin every direct dependency to a reviewed, exact version rather than allowing the package manager to select the latest release.
- Maintain a lockfile that records all transitive dependencies.
- Require cryptographic hashes for Python artifacts, such as through a hash-locked requirements file and
pip install --require-hashes. - Install dependencies in an isolated virtual environment or container dedicated to the Skill.
- Use only explicitly configured, trusted package indexes and disable unexpected supplemental indexes to reduce dependency-confusion exposure.
- Verify package provenance, release signatures where available, and artifact hashes before updating pinned versions.
- Apply the same version-control and provenance requirements to system packages installed through Homebrew.
- Run document processing as a non-privileged account with access limited to required input and output directories.
- Keep QBO tokens outside document directories and restrict their filesystem permissions.
- Add an update-review process that scans new dependency versions before changing pins.
