Back to skill

Security audit

Capterra Reviews API - Software Search, Pricing, Reviews

Security checks for vulnerabilities and agentic risk

Overview

This is a coherent API guide for using Scavio to retrieve Capterra software profiles and reviews, with disclosed API-key use and no hidden persistence or destructive behavior.

Before installing, understand that API calls are sent to Scavio and consume credits, and keep SCAVIO_API_KEY in an environment variable or secret store. If using the optional SDKs, install them in a clean virtual environment or project and review package provenance; direct HTTPS requests avoid adding those dependencies.

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 (2)

T08 · Insecure Dependencies

Warning
Location
SKILL.md:200
Finding
Python Dependency Installation Without Integrity Verification<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:200` **Vulnerability Type**: Unverified third-party Python dependency installation **Risk Level**: Medium ### Complete Code Snippet ```bash pip install scavio==0.15.0 ``` ### Technical Analysis The Skill instructs users or agents to install the `scavio` package from pip’s configured package index. Although the package version is pinned, the instruction provides no cryptographic hash, lockfile, verified package provenance, or trusted index configuration. Version pinning improves reproducibility but does not verify package integrity. Python package installation can invoke build backends or other installation-time code. The package may also introduce transitive dependencies that are not explicitly pinned or integrity-checked. No evidence establishes that `scavio==0.15.0` is currently malicious. The risk arises from trusting a remotely distributed executable dependency without integrity controls. ### Attack Path 1. An attacker compromises the package publisher, distribution account, registry infrastructure, or a transitive dependency. 2. Malicious code is introduced into the referenced package artifact or one of its dependencies. 3. A user or agent follows the Skill documentation and runs `pip install scavio==0.15.0`. 4. Installation or build-time code executes with the privileges of the installing process. 5. The malicious component reads accessible environment variables, files, or credentials, potentially including `SCAVIO_API_KEY`, and may perform additional actions permitted by the current user. ### Impact Assessment Successful exploitation could execute arbitrary code with the privileges of the account performing the installation. The accessible scope may include: - Environment variables, including `SCAVIO_API_KEY` - Files readable or writable by the current user - Network access available to the installation process - Python environments and project files writable by that account - Ad ...[truncated 251 chars]
Remediation
<![CDATA[ ## Remediation Suggestions - Publish and verify cryptographic hashes for the exact package artifacts. - Provide a hash-locked requirements file and recommend installation with hash enforcement, for example: ```bash pip install --require-hashes -r requirements.txt ``` - Pin and audit transitive dependencies using a reviewed lockfile. - Specify an approved package index rather than relying implicitly on arbitrary local pip configuration. - Verify package publisher identity and release provenance. - Recommend installation inside an isolated virtual environment or container under a non-privileged account. - Keep API keys and unrelated secrets out of the installation process environment where practical. - State that the SDK is optional because the documented HTTPS API can be called directly without installing it. ]]>

T08 · Insecure Dependencies

Warning
Location
SKILL.md:216
Finding
JavaScript Dependency Installation Without Integrity Verification<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:216` **Vulnerability Type**: Unverified third-party npm dependency installation **Risk Level**: Medium ### Complete Code Snippet ```bash npm install scavio@0.15.0 ``` ### Technical Analysis The Skill instructs users or agents to install `scavio@0.15.0` from npm without supplying a reviewed lockfile, an expected integrity digest, package provenance verification, or lifecycle-script restrictions. An exact top-level version does not independently verify the downloaded artifact and does not necessarily pin all transitive dependencies. npm packages and their dependencies can define lifecycle scripts that execute during installation. Consequently, compromise of the publisher, registry, package release, or dependency graph could result in code execution during this step. No evidence establishes that `scavio@0.15.0` is currently malicious. The finding concerns the absence of supply-chain integrity controls around installation of remotely obtained executable components. ### Attack Path 1. An attacker compromises the npm publisher account, registry delivery path, referenced package release, or a transitive dependency. 2. The compromised component introduces a malicious installation lifecycle script or runtime payload. 3. A user or agent follows the Skill documentation and runs `npm install scavio@0.15.0`. 4. npm retrieves the affected package graph and may execute lifecycle scripts with the installer’s privileges. 5. The payload accesses available files, environment variables, or network resources, potentially including `SCAVIO_API_KEY`. ### Impact Assessment Successful exploitation could provide arbitrary code execution under the account running npm. The resulting access may include: - Environment variables and API credentials available to npm - User-readable files and writable project resources - Modification of the local dependency tree - Network access available to the installation process - ...[truncated 275 chars]
Remediation
<![CDATA[ ## Remediation Suggestions - Provide and review a committed lockfile containing npm integrity metadata. - Recommend deterministic installation with: ```bash npm ci ``` - Verify package provenance and publisher identity before installation. - Audit the complete dependency tree and monitor it for known vulnerabilities. - Disable lifecycle scripts where they are not required: ```bash npm install --ignore-scripts ``` - Run package installation in an isolated, non-privileged environment with minimal credentials available. - Avoid exposing `SCAVIO_API_KEY` or unrelated secrets while dependencies are being installed. - Clearly document that direct HTTPS requests are an alternative that does not require installing the SDK. ]]>
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:36