Back to skill

Security audit

AIsa Multi Search Engine

Security checks for vulnerabilities and agentic risk

Overview

This is a coherent search plugin that sends user-directed queries and URLs to the disclosed AIsa-backed search APIs.

Install only if you are comfortable sending search terms, URLs, and extracted content requests to AIsa and its integrated search providers. Do not use it with secrets, private internal URLs, regulated data, or confidential research topics unless your organization permits that data flow.

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
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (11)

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
93% confidence
Finding

The skill declares access to environment variables and depends on networked API calls, but it does not define any explicit tool scope such as permissions or allowed-tools. That makes the runtime trust boundary unclear and can allow broader-than-necessary execution or invocation behavior in hosts that rely on declarative scoping for policy enforcement.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The skill encourages users to submit search queries and URLs to its tools, but it does not clearly warn that these inputs are sent to external AIsa services and potentially onward to third-party providers like Tavily or Perplexity. Users may inadvertently disclose sensitive prompts, internal URLs, or proprietary research topics to external processors without informed consent.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
83% confidence
Finding

The skill is explicitly designed to transmit user-supplied queries and URLs to an external API endpoint at api.aisa.one. While external transmission is expected for a search skill, it still creates a real data-exposure risk if users provide confidential input, especially given the multi-provider backend described elsewhere in the file.

Content

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

md
## API Endpoints Reference

All endpoints use the AIsa API base URL `https://api.aisa.one/apis/v1`.

| Endpoint | Method | Description |
|----------|--------|-------------|

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The plugin transmits user-provided queries, URLs, and potentially extracted page content to a third-party service (AIsa and downstream providers like Tavily/Perplexity) without any visible consent, warning, or data-minimization control in the skill code. This creates a real privacy and compliance risk because users may unknowingly send sensitive prompts, internal URLs, or proprietary content off-platform.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The call to the explanation endpoint explicitly sets language: "en", which forces a specific language regardless of user preference. This is a natural-language policy issue because the file does not offer opt-in language selection or explain why English-only output is required.

Content

No source excerpt is available for this finding.

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 · index.ts (reported line 20)May include surrounding context.

ts
from concurrent.futures import ThreadPoolExecutor, as_completed
from typing import Any

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


def get_api_key() -> str:

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/search_client.py (reported line 28)May include surrounding context.

python
from concurrent.futures import ThreadPoolExecutor, as_completed
from typing import Any

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


def get_api_key() -> str:

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

This code sends user-provided search queries to a remote service via HTTP POST, which is a privacy-relevant network operation. While the script identifies itself as a search client, it does not visibly disclose at the point of execution that query text will be sent to third-party API endpoints, and the same pattern recurs across commands.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The explain request forces "language": "en", which imposes a specific language/locale choice on output. There is no user opt-in or configurable language parameter, so this is a natural-language policy violation under the locale-choice rule.

Content

No source excerpt is available for this finding.

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
40% confidence
Finding

Dependencies lack version pinning, allowing potential malicious package updates. Consider pinning versions.

Content

Scanner excerpt · package.json (reported line 30)May include surrounding context.

json
}
  },
  "dependencies": {
    "@sinclair/typebox": "^0.32.0"
  }
}

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
81% confidence
Finding

The code reads an API credential from the environment, which falls under sensitive credential access. Although the module docstring says the variable is required, it does not warn users about handling or security expectations for the credential beyond its existence.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.