T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:263
- Finding
- Unpinned Third-Party Package and Browser Installation<![CDATA[ ## Vulnerability Details **File Locations**: - `SKILL.md:263-269` - `README.md:70-76` **Vulnerability Type**: Unpinned third-party dependency installation **Risk Level**: Medium ### Vulnerable Code From `SKILL.md:263-269`: ```markdown ### First-Time Setup Check if Playwright is available by running `python3 -c "from playwright.sync_api import sync_playwright"`. If it fails, guide the user: ```bash pip install "playwright>=1.40.0" playwright install chromium ``` ``` The same installation instructions appear in `README.md:70-76`: ```markdown ### First-Time Setup ```bash pip install "playwright>=1.40.0" playwright install chromium ``` ``` ### Technical Analysis The package requirement uses an open-ended lower bound rather than an exact, reviewed version. Consequently, the command may install any future Playwright release accepted by the package resolver. The subsequent `playwright install chromium` command also downloads a browser artifact without a project-specified version lock or integrity digest. Python package installation can execute package build or installation logic with the invoking user's permissions. Browser binaries are also executable components. The effective code installed by these commands can therefore change after the skill itself has been audited. There is no evidence that the named Playwright package or its current browser artifact is malicious. The vulnerability is the mutable supply-chain trust model and absence of reproducible dependency verification. ### Attack Path 1. The user invokes the Amazon highlight-fetching feature. 2. The skill detects that Playwright is unavailable and presents the documented installation commands. 3. The user or agent runs `pip install "playwright>=1.40.0"`. 4. The package resolver selects a release that was not fixed or reviewed by this project. 5. `playwright install chromium` downloads an additional executable browser artifact. 6. If the package source, a future release, the user's pack ...[truncated 762 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Replace the open-ended requirement with an exact, reviewed version: ```bash python3 -m pip install "playwright==<audited-version>" ``` 2. Publish a lockfile or requirements file containing cryptographic hashes, and install with hash enforcement: ```bash python3 -m pip install --require-hashes -r requirements.txt ``` 3. Run installation inside a dedicated virtual environment rather than the system Python environment. 4. Document the expected package index and advise users to review custom `pip` index configuration that could enable dependency substitution. 5. Pin and document the expected Playwright-managed Chromium revision. Where supported, verify downloaded artifacts against vendor-provided checksums or signatures. 6. Periodically review and deliberately update the pinned versions rather than accepting arbitrary future releases automatically. 7. Explicitly warn users not to run the installation commands with `sudo` or another privileged account. ]]>
