T08 · Insecure Dependencies
- Location
SKILL.md:54- Finding
Unpinned Third-Party Python Dependency
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 54-58
Vulnerability Type: Unpinned dependency installation without integrity verification
Risk Level: MediumVulnerable Code
markdown ## Requirements - `pip install openpyxl` (already installed in workspace) - Node.js QBO client with valid auth token - QBO credentials configuredTechnical Analysis
The documented installation command does not pin
openpyxlto a reviewed version, verify package hashes, or specify a trusted package repository. Consequently, the installed artifact can vary over time and may be resolved through a user-controlled or compromised Python package index.This creates a supply-chain risk if a user follows the installation instruction. A malicious or compromised package artifact could execute installation-time or runtime code with the privileges of the user running
pip. The risk is conditional: the file states that the package is already installed, and the audited project contains no script that automatically executes this command.Attack Path
- An attacker compromises a package release, configured package mirror, DNS or repository path, or otherwise influences dependency resolution.
- A user follows the documented
pip install openpyxlinstruction in an environment where the dependency is absent or being refreshed. pipresolves and installs an artifact without checking an expected version and cryptographic hash.- Malicious package code executes during installation or when imported by the referenced pipeline.
- The code runs with the invoking user's privileges and may access resources available to that process.
Impact Assessment
Successful exploitation could permit arbitrary code execution with the privileges of the user performing the installation or running the pipeline. The affected scope could include files accessible to that user, generated financial reports, local cache data, and ...[truncated 385 chars]
- Remediation
View remediation
Remediation Suggestions
- Replace the ad hoc installation command with a reviewed and version-controlled dependency file.
- Pin
openpyxlto an explicitly approved version. - Record cryptographic hashes and require their validation during installation:
bash python3 -m pip install --require-hashes -r requirements.txt - Generate and review the lock file through a controlled dependency-update process.
- Use an explicitly trusted package index, and prevent fallback to unapproved extra indexes or mirrors.
- Run dependency vulnerability and provenance checks in CI before accepting updates.
- Install dependencies in an isolated virtual environment under a non-privileged account.
- Avoid exposing QBO tokens or credentials to package installation processes; provide them only to the pipeline at runtime using a secure secret-management mechanism.
