T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:256
- Finding
- Unpinned Third-Party Packages and Browser Executable<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 256-258 **Vulnerability Type**: Uncontrolled third-party dependency installation **Risk Level**: Medium ### Vulnerable Code ```bash pip install aiohttp Pillow numpy scikit-learn openai google-generativeai # Optional for JS-heavy sites: pip install playwright && playwright install chromium ``` A related installation instruction also appears at line 84: ```text - Optional dependency: `pip install playwright && playwright install` ``` ### Technical Analysis The installation commands do not pin dependency versions, require package hashes, use a reviewed lockfile, or constrain the package source. Consequently, the exact code installed can change without any modification to the audited Skill. The `playwright install chromium` command additionally retrieves a browser executable from an external distribution channel. Neither the browser revision nor an integrity value is documented in the project. Although no malicious dependency was identified in the supplied artifact, these instructions create an avoidable supply-chain exposure because future or compromised upstream artifacts would be trusted implicitly. The project contains only `SKILL.md`; therefore, there is no dependency manifest, constraints file, lockfile, or vendored implementation with which to verify the installed dependency graph. ### Attack Path 1. An attacker compromises an upstream package release, package-distribution account, package index, browser download channel, or another transitive dependency. 2. Alternatively, a future upstream version introduces malicious behavior or a security regression. 3. A user follows the documented installation commands without version or hash verification. 4. `pip` resolves and installs the currently available releases and their transitive dependencies; Playwright retrieves an external Chromium payload. 5. Installation-time or runtime code executes with the privileges of the user or servic ...[truncated 851 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Add a reviewed dependency manifest and lockfile containing exact versions for every direct and transitive dependency. 2. Use hashes for Python packages, such as a requirements file compatible with `pip install --require-hashes`. 3. Pin Playwright to an approved version and document the corresponding browser revision. 4. Verify browser artifacts through supported integrity controls and retrieve them only from trusted, authenticated sources. 5. Use a controlled internal package mirror or explicitly configured trusted index where practical. 6. Integrate dependency vulnerability and provenance scanning into release review. 7. Run installation and extraction in an isolated, unprivileged environment with minimal filesystem and network access. 8. Avoid exposing credentials to installation steps. Provide secrets only to the runtime components that require them. ]]>
