Back to skill

Security audit

Perplexity Search

Security checks for vulnerabilities and agentic risk

Overview

This skill is a straightforward Perplexity/AIsa search client that sends user queries to a documented external API using a required API key.

Install only if you intend to send prompts to AIsa/Perplexity-backed services. Avoid putting secrets, confidential documents, regulated data, or private internal context in queries unless that external processing is acceptable for your use case.

Vulnerability Patterns
  • 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
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (10)

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
95% confidence
Finding

The skill explicitly requires environment access (AISA_API_KEY) and performs outbound network calls, but it does not declare a tool scope such as permissions or allowed-tools. That weakens least-privilege controls and makes it easier for an agent runtime to grant broader capabilities than the user may expect.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The description says the skill provides Perplexity-powered answers but does not warn that user prompts and query content are sent to an external API service. This creates a privacy and consent issue because users may provide sensitive data without realizing it will leave the local environment.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
89% confidence
Finding

This section instructs use of curl examples that send model prompts to an external service. In context, external transmission is the core function of the skill, but it is still a real security concern because arbitrary user content may be exfiltrated to a third party if the user is not clearly warned.

Content

Scanner excerpt · SKILL.md (reported line 47)May include surrounding context.

--system "Respond in markdown with an executive summary first."

text

## Curl Examples

### Sonar

External Transmission

Medium
Category
Data Exfiltration
Confidence
97% confidence
Finding

The skill sends requests to https://api.aisa.one/ with user-supplied message content and an authorization token. Although this is expected behavior for a search API integration, it is still external data transmission and can expose sensitive prompts or research material to a third-party service.

Content

Scanner excerpt · SKILL.md (reported line 52)May include surrounding context.

Sonar

bash
curl -X POST "https://api.aisa.one/apis/v1/perplexity/sonar" \
  -H "Authorization: Bearer $AISA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{

External Transmission

Medium
Category
Data Exfiltration
Confidence
97% confidence
Finding

This example transmits prompts to the sonar-pro endpoint at api.aisa.one, which constitutes third-party data sharing. The contextual risk is moderate rather than high because the behavior is advertised, but the absence of explicit disclosure and redaction guidance increases the chance of accidental data leakage.

Content

Scanner excerpt · SKILL.md (reported line 66)May include surrounding context.

Sonar Pro

bash
curl -X POST "https://api.aisa.one/apis/v1/perplexity/sonar-pro" \
  -H "Authorization: Bearer $AISA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{

External Transmission

Medium
Category
Data Exfiltration
Confidence
97% confidence
Finding

The sonar-reasoning-pro example sends potentially detailed analytical prompts to an external API. Reasoning-oriented requests often contain richer internal context, which can increase the sensitivity of the transmitted data if users are not warned.

Content

Scanner excerpt · SKILL.md (reported line 80)May include surrounding context.

Sonar Reasoning Pro

bash
curl -X POST "https://api.aisa.one/apis/v1/perplexity/sonar-reasoning-pro" \
  -H "Authorization: Bearer $AISA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{

External Transmission

Medium
Category
Data Exfiltration
Confidence
98% confidence
Finding

The sonar-deep-research endpoint is designed for long-form research requests, which can involve large volumes of sensitive context being sent to a third party. This makes external transmission more consequential in this skill context, especially without strong disclosure and data-handling guidance.

Content

Scanner excerpt · SKILL.md (reported line 94)May include surrounding context.

Sonar Deep Research

bash
curl -X POST "https://api.aisa.one/apis/v1/perplexity/sonar-deep-research" \
  -H "Authorization: Bearer $AISA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · scripts/perplexity_search_client.py (reported line 25)May include surrounding context.

python
class PerplexitySearchClient:
    """Minimal client for AIsa Perplexity Sonar endpoints."""

    BASE_URL = "https://api.aisa.one/apis/v1"

    def __init__(self, api_key: Optional[str] = None):
        self.api_key = api_key or os.environ.get("AISA_API_KEY")

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

This code serializes the user's query and optional system instruction into a request body and sends it to a remote API endpoint. While the module docstring describes usage, it does not warn that user-supplied content is transmitted off-host, and there is no confirmation prompt or runtime notice before the network call.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
85% confidence
Finding

The constructor reads AISA_API_KEY from the environment to authenticate outbound requests. Although failure is reported if the variable is missing, the code does not clearly disclose to users that the skill consumes an environment credential for remote authentication.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.