T08 · Insecure Dependencies
- Location
SKILL.md:12- Finding
Unpinned Third-Party Dependencies Installed from Mutable Package Repositories
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:12,SKILL.md:31-34,ocr.md:13-25, andtroubleshooting.md:16-21
Vulnerability Type: Unpinned and unverified third-party dependencies
Risk Level: MediumVulnerable Code Snippets
SKILL.md:12:yaml metadata: {"clawdbot":{"emoji":"📄","requires":{"bins":["python3"],"pip":["pymupdf"]},"os":["linux","darwin","win32"],"install":[{"id":"pymupdf","kind":"pip","package":"PyMuPDF","label":"Install PyMuPDF"}]}}SKILL.md:31-34:bash pip install PyMuPDFocr.md:13-25:bash brew install tesseractbash sudo apt install tesseract-ocrbash pip install pytesseracttroubleshooting.md:16-21:bash pip install PyMuPDFTechnical Analysis
The Skill directs users or an automated Agent to install PyMuPDF, pytesseract, and Tesseract without specifying reviewed versions, integrity hashes, or a locked dependency set. The Skill metadata similarly declares
pymupdfwithout a version constraint.These commands resolve packages from mutable external repositories at installation time. Consequently, the code ultimately installed can differ from the code that existed when the Skill was audited. If a package release, package repository, maintainer account, distribution mirror, or dependency in the transitive dependency chain is compromised, installation could introduce malicious code not present in this repository.
The
sudo apt install tesseract-ocrinstruction also requests a privileged, system-wide package installation. This is not by itself evidence of privilege escalation because the user must authorizesudo, but it increases the potential impact of a compromised repository or package.No evidence was found that the named packages are currently malicious, that dependency confusion is actively being exploited, or that the Skill intentionally uses an untrusted repository. The risk arises from ...[truncated 1621 chars]
- Remediation
View remediation
Remediation Suggestions
-
Pin every Python dependency to a specifically reviewed version, for example:
bash python3 -m pip install "PyMuPDF==<reviewed-version>" "pytesseract==<reviewed-version>" -
Maintain a locked requirements file with hashes and install it using hash enforcement:
bash python3 -m pip install --require-hashes -r requirements.txt -
Update the Skill metadata so its dependency declarations use supported exact-version constraints rather than an unconstrained package name.
-
Document the expected package indexes and operating-system repositories. Avoid adding arbitrary package indexes, mirrors, PPAs, or installation scripts fetched from URLs.
-
Install Python dependencies in a dedicated virtual environment with minimal permissions rather than into a global interpreter environment.
-
Avoid privileged installation where possible. If Tesseract requires a system package, instruct users to verify the configured repository and package signature before explicitly authorizing administrative installation.
-
Establish a controlled dependency-update process that reviews release notes, verifies package provenance, scans the resolved dependency set, and updates pins and hashes only after validation.
-
Consider generating and maintaining an SBOM so that reviewed dependency versions and future changes can be tracked.
-
