T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:218
- Finding
- Unverified Third-Party SDK Installation Creates Supply-Chain Exposure<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:218-241` **Vulnerability Type**: Third-party dependency installation without integrity verification **Risk Level**: Medium ### Complete Code Snippet ```bash pip install scavio==0.15.0 ``` ```python from scavio import ScavioClient client = ScavioClient() # reads SCAVIO_API_KEY listings = client.redfin.search(location="78704", listing_status="for_sale", beds_min=3, max_price=800000, limit=350) prop = client.redfin.property("https://www.redfin.com/TX/Austin/...") market = client.redfin.market(region_id=30749, region_type=6) ``` ```bash npm install scavio@0.15.0 ``` ```js import { Scavio } from "scavio"; const scavio = new Scavio(); // reads SCAVIO_API_KEY const listings = await scavio.redfin.search({ location: "78704", listing_status: "sold", sold_within_days: 30 }); ``` ### Technical Analysis The Skill instructs users or agents to install executable packages from public Python and npm registries. Pinning both SDKs to version `0.15.0` limits unintended version changes, but the instructions provide no lockfile, cryptographic hash, integrity metadata, verified source reference, or review of transitive dependencies. Package installation and subsequent import can execute code supplied by the package or its dependency chain. The examples explicitly initialize the SDKs in a process containing `SCAVIO_API_KEY`, placing that credential within reach of dependency code. The audited project contains no copy of either SDK's source, so their behavior and dependency trees could not be verified as part of this audit. This finding establishes an unsafe supply-chain trust path; it does not establish that the named packages are currently malicious. ### Attack Path 1. An attacker compromises the relevant registry account, package release process, distribution infrastructure, or a transitive dependency. 2. The victim follows `SK ...[truncated 1362 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Prefer the documented direct HTTPS API workflow, which does not require installing either SDK. 2. Publish and verify official source repositories, package ownership, release-signing information, and build provenance for both packages. 3. For Python, provide a hash-locked requirements file and require hash verification, for example with `pip install --require-hashes`. 4. For Node.js, provide a committed lockfile with integrity records and use `npm ci` rather than an unconstrained install workflow. 5. Audit and pin all transitive dependencies, not only the top-level SDK version. 6. Install dependencies in an isolated virtual environment or container under a non-privileged account. 7. Avoid exposing unrelated credentials or sensitive environment variables to the SDK process. Supply only `SCAVIO_API_KEY` when it is required. 8. Disable or review package installation scripts where operationally feasible, and continuously scan installed packages for known vulnerabilities and unexpected ownership changes. 9. Rotate `SCAVIO_API_KEY` promptly if dependency compromise is suspected, and monitor the account for unexplained credit consumption. ]]>
