T08 · Insecure Dependencies
- Location
SKILL.md:142- Finding
Unpinned Third-Party Python Dependencies
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:142andSKILL.md:232
Vulnerability Type: Unpinned dependency installation
Risk Level: MediumVulnerable Code
At
SKILL.md:138-143:bash # Ensure the Python environment is available python3 --version # ... # Dependencies pip install requestsAt
SKILL.md:228-233:markdown | Dependency | Type | Required | Installation Method | |---:|---:|---:|---:| | LLM API | API | Required | Provided by the Agent's built-in LLM | | python-pptx | Python package | Required | pip install python-pptx | | libreoffice | System tool | Optional | LibreOffice is required for PDF conversion |Technical Analysis
The skill instructs the Agent to install
requestsandpython-pptxwithout version constraints or cryptographic hashes. Consequently, the installed artifacts depend on the package versions served by the configured Python package index at execution time rather than on dependencies verified during the skill audit.If a package release, package-index account, configured mirror, or dependency in the transitive dependency graph is compromised, invoking these commands could install attacker-controlled code. Python packages may execute code during installation or when imported later by the skill.
The provided example does not import or otherwise use
requests, so its installation unnecessarily expands the supply-chain attack surface.Attack Path
- An attacker compromises a relevant package release, publisher account, package mirror, or transitive dependency.
- A user or Agent follows the skill instructions and runs
pip install requestsorpip install python-pptx. - Pip resolves the current package version from the configured index without checking a project-supplied version lock or hash.
- The malicious package code executes during installation or when the installed module is imported.
- The code operates with the ...[truncated 812 chars]
- Remediation
View remediation
Remediation Suggestions
- Remove the
requestsinstallation instruction unless the skill implements functionality that requires it. - Pin every required package to a reviewed version, for example
python-pptx==<reviewed-version>. - Maintain dependencies in a lock file or requirements file generated from a reviewed environment.
- Require package hashes using a command such as
pip install --require-hashes -r requirements.txt. - Pin and review transitive dependencies rather than relying only on top-level version constraints.
- Install packages from an explicitly approved index or internal mirror.
- Perform dependency installation in an isolated virtual environment or restricted container without unnecessary credentials or filesystem access.
- Add automated vulnerability and integrity scanning for dependency updates before changing pinned versions.
- Remove the
