T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:97
- Finding
- Unpinned Third-Party Native Binary Installation<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 97–106 **Vulnerability Type**: Unpinned and mutable third-party native dependencies **Risk Level**: Medium ### Vulnerable Code ```bash pip install pyunbrowser # Optional: installs the Chrome/CDP helper for local challenge-cookie handoff. pip install 'pyunbrowser[solver]' # Or with pipx for an isolated CLI: pipx install pyunbrowser # Or with uv: uv tool install pyunbrowser ``` ```text The wheel ships the platform-specific native binary inside it and registers an `unbrowser` script on `$PATH`. macOS (arm64/x86_64) and Linux (x86_64/aarch64) are supported; other platforms must build from source (`cargo install --git https://github.com/protostatis/unbrowser`). PyPI distribution name is `pyunbrowser`, not `unbrowser`, due to PyPI name moderation; the binary and import name are still `unbrowser`. ``` The related installation guidance at lines 56–57 explicitly recommends installing or upgrading to the latest release: ```text - Prefer isolated installation. `pipx install pyunbrowser` or `uv tool install pyunbrowser` quarantine the binary and its native dependency. `pip install --user` is acceptable but mixes the binary into the user's site-packages. - Install the latest version. `pipx install pyunbrowser` (or `pipx upgrade pyunbrowser` if you already have it) pulls the current release. The wheel ships a platform-specific native binary; verify the upstream repository (https://github.com/protostatis/unbrowser) before upgrading across versions. ``` ### Technical Analysis The Skill directs users or Agents to download and execute `pyunbrowser` without a pinned package version, artifact checksum, cryptographic signature, or dependency lockfile. The package includes a platform-specific native executable, so installation introduces code that is not contained in or reviewable from this Skill package. The alternative Cargo command also installs directly from a mutable Git repository reference without ...[truncated 2199 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Pin `pyunbrowser` and optional solver dependencies to exact, reviewed versions rather than installing the latest release: ```bash pipx install 'pyunbrowser==REVIEWED_VERSION' ``` 2. For source installation, pin a reviewed immutable Git commit: ```bash cargo install --git https://github.com/protostatis/unbrowser --rev REVIEWED_COMMIT ``` 3. Publish expected SHA-256 hashes or verified signatures for every supported platform-specific binary and require verification before execution. 4. Maintain a lockfile or equivalent manifest for all transitive dependencies used to build and distribute the binary. 5. Remove automatic “install latest” and unconditional upgrade recommendations. Require security review before changing the pinned version or commit. 6. Prefer reproducible builds from audited source and document how users can compare locally built artifacts with published releases. 7. Continue recommending isolated installation, but clarify that environment isolation does not replace artifact integrity verification. 8. Minimize the runtime exposure of the native binary by running it under a dedicated low-privilege account or sandbox and granting access only to the target network destinations and runtime cookies required for the active task. ]]>
