T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:218
- Finding
- Third-Party SDK Installation Without Integrity Verification## Vulnerability Details **File Location**: `SKILL.md`, lines 218-244 **Vulnerability Type**: Unverified third-party package installation and credential exposure to dependencies **Risk Level**: Medium ### Vulnerable Code ```bash pip install scavio==0.15.0 ``` ```python from scavio import ScavioClient client = ScavioClient() # reads SCAVIO_API_KEY who = client.google_ads.advertisers("Notion", region="DE", limit=20) page1 = client.google_ads.search(advertiser_id="AR16735076323512287233", region="DE", limit=100) page2 = client.google_ads.search(advertiser_id="AR16735076323512287233", region="DE", limit=100, cursor=page1["data"]["next_cursor"]) creative = client.google_ads.creative("AR16735076323512287233", "CR1234567890") ``` ```bash npm install scavio@0.15.0 ``` ```js import { Scavio } from "scavio"; const scavio = new Scavio(); // reads SCAVIO_API_KEY const ads = await scavio.googleAds.search({ domain: "notion.so", region: "DE", limit: 100 }); ``` ### Technical Analysis The Skill recommends installing Python and npm packages directly from public package registries. Although both dependencies are version-pinned to `0.15.0`, the instructions do not provide cryptographic hashes, lockfiles with integrity metadata, package provenance verification, or a reviewed vendored artifact. Package installation can execute package-controlled build or lifecycle logic. Once imported and initialized, the SDKs are deliberately given access to `SCAVIO_API_KEY` through the process environment. Consequently, compromise of the package release, publisher account, registry, or dependency tree could result in attacker-controlled code executing with the privileges of the user running the Skill. The direct HTTPS examples elsewhere in the file send the bearer credential only to the documented `https://api.scavio.dev` endpoi ...[truncated 1708 chars]
- Remediation
- ## Remediation Suggestions 1. Prefer the documented direct HTTPS implementation, which avoids adding an executable SDK dependency and limits credential transmission to the declared API endpoint. 2. For Python, distribute a hash-locked requirements file and require installation with `pip install --require-hashes -r requirements.txt`. 3. For JavaScript, provide and verify a committed lockfile containing registry integrity metadata; use reproducible installation such as `npm ci`. 4. Verify package publisher identity, release provenance, signatures where available, and the complete transitive dependency tree before recommending installation. 5. Disable npm lifecycle scripts with `--ignore-scripts` when compatible with the package, and perform installation in an isolated, minimally privileged environment. 6. Use a narrowly scoped, revocable API key with usage limits. Do not expose unrelated secrets to the SDK process. 7. Document credential rotation and revocation procedures so that a potentially exposed key can be invalidated promptly. 8. Consider vendoring and reviewing a minimal client implementation if SDK functionality is required in security-sensitive environments.
