T08 · Insecure Dependencies
- Location
SKILL.md:217- Finding
Unverified Third-Party SDK Installation Creates Supply-Chain Risk
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 217-242
Vulnerability Type:T08: Insecure Dependencies
Risk Level: MediumThe Skill recommends installing Python and npm SDK packages from public package registries. Although both dependencies are pinned to version
0.15.0, the instructions do not provide integrity hashes, lockfiles, package provenance verification, or controls against installation-time scripts.bash pip install scavio==0.15.0python from scavio import ScavioClient client = ScavioClient() # reads SCAVIO_API_KEY page1 = client.meta_ads.search("project management software", country="US", active_status="active") page2 = client.meta_ads.search("project management software", cursor=page1["data"]["next_cursor"]) by_page = client.meta_ads.advertiser("20531316728", country="US") one = client.meta_ads.ad("1234567890123456")bash npm install scavio@0.15.0js import { Scavio } from "scavio"; const scavio = new Scavio(); // reads SCAVIO_API_KEY const ads = await scavio.metaAds.search({ query: "project management software", country: "US" }); const { next_cursor } = ads.data as Record<string, any>; const next = await scavio.metaAds.search({ query: "project management software", cursor: next_cursor });Technical Analysis
Package installation is an executable trust boundary. Python packages may run build-backend or setup logic during installation, while npm packages may execute lifecycle scripts such as
preinstall,install, andpostinstall. Version pinning limits unintended version upgrades but does not verify the integrity or provenance of the selected artifact.The installed SDKs are expected to read
SCAVIO_API_KEY. Consequently, a compromised registry account, malicious release, substituted artifact, or compromised ...[truncated 2178 chars]- Remediation
View remediation
Remediation Suggestions
- Prefer the documented direct HTTPS API requests, which avoid installing executable SDK dependencies.
- If SDK installation remains supported, publish verified package provenance and links to the authoritative package and source repositories.
- Provide reproducible lockfiles containing exact transitive dependency versions and integrity metadata.
- For Python, distribute and verify package hashes, for example through a requirements file used with
pip install --require-hashes. - For npm, provide a reviewed lockfile and use
npm cirather than an unconstrained install workflow. - Disable npm lifecycle scripts with
--ignore-scriptswhen the SDK does not require them. - Install dependencies in a dedicated virtual environment, container, or other sandbox under a non-privileged account.
- Do not install packages with administrator or root privileges.
- Expose only
SCAVIO_API_KEYto the SDK process and remove unrelated secrets from its environment. - Document credential rotation procedures so the API key can be promptly revoked if dependency compromise is suspected.
