T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:20
- Finding
- Unpinned Dependency Installation Bypasses System Package Protections## Vulnerability Details **File Location**: `SKILL.md`, lines 20-23 **Vulnerability Type**: Unpinned third-party dependency installation in the system Python environment **Risk Level**: Medium ### Vulnerable Code ```bash # Install the Python library pip3 install playwright --break-system-packages # Install the browser python3 -m playwright install chromium ``` ### Technical Analysis The installation instructions retrieve `playwright` without an exact version or cryptographic hash. Dependency resolution therefore selects whichever compatible package release is available from the configured Python package index at installation time. The effective installed content can change after the skill has been audited. The `--break-system-packages` option bypasses the protection for externally managed Python environments. If the invoking account has sufficient filesystem permissions, this can install or replace packages in an OS-managed Python environment, potentially causing dependency conflicts or affecting other applications that share that interpreter. The subsequent Playwright command also downloads a Chromium browser binary associated with the resolved Playwright release. Neither the package version nor the resulting browser version is fixed by these instructions. No evidence was found that the current `playwright` package or downloaded browser is malicious. The risk arises from mutable, unverified supply-chain inputs and the explicit bypass of package-management safeguards. ### Attack Path 1. A user follows the documented installation instructions. 2. `pip3` contacts the configured package index and resolves the current available Playwright release rather than a previously audited exact version. 3. If the configured index, upstream account, release process, or local package-index configuration is compromised, attacker-controlled package content may be returned. 4. Package installation operations execute with the privil ...[truncated 1124 chars]
- Remediation
- ## Remediation Suggestions 1. Remove `--break-system-packages` and install the dependency inside a dedicated virtual environment: ```bash python3 -m venv .venv . .venv/bin/activate python3 -m pip install --upgrade pip ``` 2. Pin Playwright to a specifically reviewed version rather than using an unconstrained package name: ```text playwright==<reviewed-version> ``` 3. Generate and enforce cryptographic hashes for all resolved Python dependencies, for example through a locked requirements file and: ```bash python3 -m pip install --require-hashes -r requirements.txt ``` 4. Use the official Python package index or an authenticated, controlled internal mirror, and document the expected index configuration. 5. Pin the lock file and Playwright version together so the expected Chromium revision remains reproducible. 6. Perform installation as an unprivileged user and avoid sharing the environment with system services or unrelated applications. 7. Review dependency updates before changing the pinned version, including package provenance, release notes, checksums, and transitive dependencies.
