Back to skill

Security audit

Google Ads Transparency API - Advertiser Lookup, Live Ad Creatives

Security checks for vulnerabilities and agentic risk

Overview

This skill is a coherent Scavio Google Ads Transparency API guide that discloses its API key, network use, costs, and limits.

Before installing, be comfortable sharing a Scavio API key with this workflow and with each request spending credits. Prefer the direct HTTPS examples for minimal dependency exposure, or install the SDK in an isolated environment with a revocable, scoped API key.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

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.
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep

Static analysis

Detected: suspicious.exposed_secret_literal

File appears to expose a hardcoded API secret or token.

Critical
Code
suspicious.exposed_secret_literal
Location
SKILL.md:37