T08 · Insecure Dependencies
- Location
SKILL.md:141- Finding
Unpinned Third-Party Package Installation
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:141,SKILL.md:227-228
Vulnerability Type: Unpinned third-party dependencies
Risk Level: MediumVulnerable Code
SKILL.md:141:bash pip install requestsSKILL.md:227-228:bash pip install pypdf pip install pdfplumberTechnical Analysis
The Skill instructs users or an executing Agent to install
requests,pypdf, andpdfplumberwithout fixed versions or package integrity hashes. Consequently, installation resolves whichever compatible releases the configured package index provides at execution time.This prevents the reviewed Skill from defining a reproducible and verifiable dependency set. If a dependency release or configured package source is compromised, malicious installation hooks or package code could execute with the privileges of the user running
pip. Dependency code may also execute later when imported by the PDF parser.The demonstrated parser imports
pypdf, but it does not userequests. Installing an unused package unnecessarily increases the dependency and supply-chain attack surface.No evidence indicates that these packages are currently malicious or that the Skill intentionally retrieves a malicious payload. The risk arises from unpinned, unhashed dependency installation and is contingent on compromise or manipulation of the package supply chain.
Attack Path
- An attacker compromises a dependency release, its publisher account, or a package index used by the environment.
- A user or Agent follows the Skill instructions and runs an unpinned
pip installcommand. pipretrieves the attacker-controlled package version because no reviewed version or integrity hash is enforced.- Malicious package installation logic executes, or malicious runtime code executes when the package is imported.
- The payload operates with the permissions of the user or Agent process.
Impact Assessm
...[truncated 538 chars]
- Remediation
View remediation
Remediation Suggestions
- Remove the
requestsinstallation instruction unless the implementation genuinely requires that package. - Pin every direct dependency to a reviewed version, for example:
text pypdf==REVIEWED_VERSION pdfplumber==REVIEWED_VERSION - Place dependencies in a lock file or requirements file and require cryptographic hashes, such as with
pip install --require-hashes -r requirements.txt. - Pin and review transitive dependencies as part of the lock process.
- Install packages only from an explicitly trusted package index, and prevent fallback to untrusted or unintended indexes.
- Perform dependency vulnerability and provenance checks before publishing updates.
- Install dependencies in an isolated virtual environment with minimal filesystem, credential, and network access.
- Avoid running package installation or PDF processing with administrative privileges.
- Remove the
