T08 · Insecure Dependencies
- Location
SKILL.md:195- Finding
Unpinned Third-Party Dependencies and Browser Components
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 195–202 and 258–267
Vulnerability Type: Uncontrolled third-party dependency installation
Risk Level: MediumVulnerable Code
Lines 195–202:
bash # Install Scrapling and all optional dependencies pip install "scrapling[all]" scrapling install # ... # Install httpx (HTTP client) pip install httpxLines 258–267:
bash # Full installation (recommended, including browser engine) pip install "scrapling[all]" scrapling install # ... # Minimal installation (core parsing functionality only) pip install scrapling # ... # Verify installation python -c "import scrapling; print(scrapling.__version__)"Technical Analysis
The Skill instructs the Agent to install
scrapling, all of its optional dependencies,httpx, and browser components without pinning reviewed versions or validating package hashes. No lockfile, integrity metadata, trusted package index, or artifact verification procedure is provided.Python package installation may execute package-controlled build logic. Installing the
[all]extra also increases the number of transitive packages exposed to supply-chain compromise. The separatescrapling installcommand retrieves additional browser-related artifacts whose versions and integrity are not constrained by the Skill.This creates a supply-chain risk if a future package release, transitive dependency, configured package index, or downloaded browser artifact is compromised. The audit did not find evidence that the currently named packages are malicious; the vulnerability is the uncontrolled installation process.
Attack Path
- A user requests the Skill's web-scraping functionality.
- The Agent follows the setup instructions in
SKILL.md. - The Agent runs the unpinned
pip installandscrapling installcommands. - The package manager resolves whatever versions are currently available f ...[truncated 1050 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin every direct dependency to a reviewed exact version rather than allowing unconstrained resolution.
- Generate and commit a lockfile that records resolved transitive dependency versions.
- Require package hashes, such as with
pip install --require-hashes -r requirements.txt. - Install only the Scrapling extras strictly required by the advertised non-JavaScript scraping behavior; avoid
[all]unless every component is necessary. - Pin and verify browser component versions and checksums before installation.
- Use an explicitly configured, trusted package index or an internally mirrored repository containing reviewed artifacts.
- Perform installation inside an isolated virtual environment or disposable container under a non-privileged account.
- Separate dependency installation from normal Skill invocation so users can review and approve the resolved artifacts.
- Add automated dependency scanning and periodically review locked versions for known vulnerabilities.
