T08 · Insecure Dependencies
- Location
SKILL.md:138- Finding
Unpinned Python Dependency Installation
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 138-143
Vulnerability Type: Unpinned third-party dependency and insufficient supply-chain controls
Risk Level: Mediumbash ## Requirements ```bash pip install openpyxl # Node.js QBO client must be auth'd node bin/qbo info {slug} # from your QBO integration directorytext ### Technical Analysis The installation command does not pin `openpyxl` to a reviewed version, verify a package hash, use a lockfile, or constrain the package index. Consequently, the installed code can vary between executions according to the latest available release and the active pip configuration. Because Python packages execute code when imported and may execute build-related code during installation, a compromised package release, package-index account, configured mirror, or local pip configuration could introduce unauthorized code. The risk is especially relevant here because the documented environment uses an authenticated QBO integration and processes sensitive accounts-receivable information. The audit did not identify evidence that `openpyxl` itself is malicious. The vulnerability is the absence of controls ensuring that users consistently install a specifically reviewed artifact. The referenced pipeline implementation is not included in the supplied project, so its import behavior and additional dependency controls could not be verified. ### Attack Path 1. An attacker compromises a permitted package release or a package index or mirror used by the target environment. 2. The attacker publishes or serves a modified `openpyxl` artifact under a version accepted by the unrestricted command. 3. A user follows the Skill instructions and runs `pip install openpyxl`. 4. Pip resolves and installs the attacker-controlled artifact because no version or cryptographic hash is enforced. 5. Malicious code executes during installation or when the AR pipeline imports the packa ...[truncated 727 chars]- Remediation
View remediation
Remediation Suggestions
- Pin
openpyxlto a specific, reviewed version rather than resolving the latest release:bash python3 -m pip install "openpyxl==<reviewed-version>" - Generate and commit a dependency lockfile containing cryptographic hashes. Enforce hash verification during installation, for example:
bash python3 -m pip install --require-hashes -r requirements.txt - Configure an explicitly trusted package index and prevent unexpected user-level pip configuration or unapproved mirrors from changing dependency resolution.
- Install dependencies in a dedicated, non-privileged virtual environment. Do not run pip as root or with
sudo. - Review and update pinned dependencies through a controlled process that includes vulnerability scanning, provenance checks, and testing.
- Include the referenced pipeline and its dependency manifest in the auditable project so all imports, transitive dependencies, and QBO data-handling behavior can be reviewed together.
- Pin
