T08 · Insecure Dependencies
- Location
requirements.txt:3- Finding
Unpinned Playwright Dependency and Unverified Browser Binary Download
- Content
View full analysis
Vulnerability Details
File Location:
requirements.txt:3-7
Vulnerability Type: Supply-chain exposure through unpinned executable dependencies
Risk Level: MediumComplete Code Snippet:
text playwright>=1.40.0 # Installation instructions: # 1. pip install -r requirements.txt # 2. playwright install # (This downloads browser binaries - ~300-500MB)The same installation workflow is documented in
SKILL.md:27-32:bash # Install Python packages pip install -r skills/evenrealities-tracker/requirements.txt # Install Playwright browsers (one-time, required for browser automation) playwright installTechnical Analysis
The dependency declaration uses a lower-bound-only constraint,
playwright>=1.40.0. Consequently, installations performed at different times may resolve to different releases, including versions that were not part of this audit.The documented
playwright installcommand also downloads executable browser artifacts. No package lock file, cryptographic hash verification, exact browser revision, or artifact-integrity procedure is provided. The effective executable dependency set can therefore change after the skill has been reviewed.This is a supply-chain hardening weakness rather than evidence that the current Playwright package is malicious. Exploitation would require compromise of an upstream package, distribution channel, resolved future release, or downloaded browser artifact.
Attack Path
- A user follows the documented setup instructions.
pipresolves the newest Playwright release satisfying>=1.40.0.- The selected package and its dependencies are downloaded and installed.
- The user runs
playwright install, retrieving executable browser binaries. - If an upstream package, dependency, release, distribution endpoint, or browser artifact has been compromised, attacker-controlled code is installed.
- That code may execute dur ...[truncated 617 chars]
- Remediation
View remediation
Remediation Suggestions
- Replace the lower-bound constraint with an exact, reviewed version, for example
playwright==<audited-version>. - Generate and commit a reproducible dependency lock file containing cryptographic hashes for Playwright and all transitive Python dependencies.
- Install dependencies with hash enforcement, such as
pip install --require-hashes -r requirements-lock.txt. - Pin and document the expected Playwright browser revision rather than relying on a moving browser payload.
- Verify browser artifacts against publisher-provided checksums or signatures where supported.
- Retrieve packages and browser binaries only from trusted, authenticated repositories.
- Perform dependency updates through a controlled review process that includes vulnerability scanning, integrity verification, and regression testing.
- Run installation and browser automation as an unprivileged, isolated user or inside a constrained container to reduce the impact of a supply-chain compromise.
- Replace the lower-bound constraint with an exact, reviewed version, for example
