Back to skill

Security audit

G2 Software Reviews API - Product Search, Ratings, Reviews

Security checks for vulnerabilities and agentic risk

Overview

This skill is a straightforward guide for using Scavio's G2 review API, with disclosed API-key use and no hidden execution or persistence.

Before installing optional SDK packages, use a normal isolated project environment and avoid exposing unrelated secrets during installation. Also confirm expected Scavio credit costs before multi-page pulls, since G2 calls are described as expensive.

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: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.
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:42