T08 · Insecure Dependencies
- Location
SKILL.md:60- Finding
Unpinned Third-Party Dependencies Installed at Runtime
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 60, 96, and 433–436
Vulnerability Type: Supply-chain exposure through unpinned dependencies
Risk Level: MediumVulnerable Code
bash pip install pyautogui pillowpython except ImportError: print("提示:安装 pygetwindow 可启用窗口管理:pip install pygetwindow")markdown | pyautogui | Python library | Required | `pip install pyautogui` | | Pillow | Python library | Required | `pip install pillow` (automatically installed by pyautogui) | | pygetwindow | Python library | Optional | `pip install pygetwindow` (window management) | | pyperclip | Python library | Optional | `pip install pyperclip` (Chinese input support) |Technical Analysis
The Skill instructs users or agents to install third-party Python packages without version constraints, integrity hashes, a lockfile, or an explicitly trusted package index. Consequently, the actual package code installed when the Skill is invoked can differ from the code that existed when the Skill was reviewed.
Python packages can execute code during installation and whenever they are imported. This creates a supply-chain risk if an upstream package, maintainer account, package index, or dependency is compromised. An incorrectly configured package index could also expose the installation to dependency-confusion attacks.
The audit found no evidence that the named packages are intentionally malicious. The vulnerability is the unsafe and non-reproducible dependency acquisition process.
Attack Path
- An attacker compromises a listed package, one of its transitive dependencies, or a package source used by the environment.
- The attacker publishes a malicious release that satisfies the unrestricted package name.
- A user or agent follows the Skill instructions and runs the unpinned
pip installcommand. - The malicious package executes code during installation or subsequent impor ...[truncated 580 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin every direct dependency to a reviewed version, such as
package==version. - Generate a lockfile that also fixes transitive dependency versions.
- Require package hashes, for example through
pip install --require-hashes -r requirements.txt. - Configure an explicit trusted index rather than relying on environment-dependent index settings.
- Install dependencies in an isolated virtual environment with no unnecessary privileges.
- Scan dependencies for known vulnerabilities and review updates before changing pinned versions.
- Record the supported package versions directly in the Skill documentation.
- Pin every direct dependency to a reviewed version, such as
