T08 · Insecure Dependencies
- Location
SKILL.md:29- Finding
Unpinned Third-Party Python Dependencies
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 9 and 29-31
Vulnerability Type: Unpinned and inconsistently named third-party dependencies
Risk Level: MediumComplete Code Snippet:
yaml "requires": { "python": ["pdfplumber", "pymupdf", "PIL"] },bash pip install pdfplumber pymupdf PillowTechnical Analysis
The documented installation command retrieves the latest versions of
pdfplumber,pymupdf, andPillowavailable through the user's configured Python package index. No exact versions, integrity hashes, lockfile, or trusted index are specified. Consequently, dependency resolution is mutable and installations are not reproducible.The dependency metadata identifies
PIL, while the installation command identifiesPillow. Although Pillow is the maintained distribution that provides thePILimport namespace, using inconsistent dependency identifiers can cause incorrect resolution by automated skill installers or encourage attempts to install an unintended package.Exploitation depends on an attacker influencing a configured package index, compromising one of the named distributions or its dependency chain, or causing an automated installer to resolve an unintended package. This audit found no evidence that any currently named package is malicious.
Attack Path
- A user or automated skill manager follows the documented installation instructions.
pipqueries the package indexes configured in the execution environment and resolves packages without fixed versions or expected hashes.- An attacker-controlled, compromised, or unexpectedly updated package is selected from the dependency chain.
- Package installation hooks or subsequently imported package code execute in the Python process.
- The malicious code receives the permissions of the account or environment performing the installation or running the skill.
Impact Assessment
Successful exploita ...[truncated 468 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin every direct dependency to a reviewed exact version, for example through a version-controlled requirements or lock file.
- Generate and verify cryptographic hashes for all resolved distributions, using a hash-enforcing installation workflow such as
pip install --require-hashes -r requirements.txt. - Lock transitive dependencies as well as direct dependencies to make installations reproducible.
- Use the canonical distribution name
Pillowconsistently in metadata and installation documentation; reservePILonly for the Python import namespace. - Configure an explicitly trusted package index or an internally reviewed package mirror rather than relying on arbitrary environment-level index configuration.
- Install dependencies in an isolated virtual environment under a non-privileged account.
- Add automated dependency integrity, provenance, and vulnerability checks before publishing updated lock files.
