T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:205
- Finding
- Third-Party SDK Installation Without Artifact Integrity Verification## Vulnerability Details **File Location**: `SKILL.md`, lines 205-233 **Vulnerability Type**: `T08: Insecure Dependencies` **Risk Level**: Medium The Skill instructs users to install third-party Python and JavaScript SDK packages from package registries. Although both dependencies are version-pinned, the instructions provide no cryptographic hashes, lockfiles, registry restrictions, or package-provenance verification. **Complete Code Snippet**: ```markdown `langchain-scavio` has no G2 tool - use the Scavio SDK directly: ```bash pip install scavio==0.15.0 ``` ```python from scavio import ScavioClient client = ScavioClient() # reads SCAVIO_API_KEY found = client.g2.search(query="project management", limit=100, sort="rating", rating=4) profile = client.g2.product(product_id="notion") # no review text here reviews = client.g2.reviews(product_id="notion", company_size="enterprise", role="administrator", sort="newest", page=1) ``` JavaScript / TypeScript: ```bash npm install scavio@0.15.0 ``` ```js import { Scavio } from "scavio"; const scavio = new Scavio(); // reads SCAVIO_API_KEY const reviews = await scavio.g2.reviews({ product_id: "notion", company_size: "enterprise" }); ``` ``` ### Technical Analysis Version pinning prevents an ordinary installation from automatically selecting a later version, but it does not authenticate the selected artifact. The instructions do not provide hashes, signed provenance, a lockfile, or an explicit trusted registry. Consequently, package installation depends on the integrity of the configured Python or npm registry and the publisher account. Python packages can execute build-related code under some installation workflows, while npm packages can execute lifecycle scripts during installation. A compromised publisher account, registry artifact, dependency, or package-resolution configuration could therefore cause attacke ...[truncated 1683 chars]
- Remediation
- ## Remediation Suggestions 1. Prefer the documented direct HTTPS request examples, which avoid requiring an additional SDK when only three endpoints are needed. 2. Publish cryptographic hashes for Python distributions and require hash verification, such as a fully pinned requirements file installed with `pip --require-hashes`. 3. Supply a committed npm lockfile with integrity metadata and use `npm ci` rather than an unconstrained interactive installation workflow. 4. Require official package registries explicitly and warn against untrusted mirrors or configurations that permit dependency confusion. 5. Document package ownership, source repository, release provenance, and signature or attestation verification procedures. 6. Disable npm lifecycle scripts during installation where compatible, for example with `npm ci --ignore-scripts`, and separately document any scripts genuinely required. 7. Perform installation in an isolated, least-privileged environment without unrelated credentials or sensitive files. 8. Expose `SCAVIO_API_KEY` only to the runtime process that needs it, rather than to the dependency-installation process. 9. Audit the SDK and its transitive dependencies before approving each version for use.
