Back to skill

Security audit

Wiro AI

Security checks for vulnerabilities and agentic risk

Overview

ClawScan marks this skill suspicious mainly because it recommends an optional MCP setup that downloads and runs an unpinned package; scanners also flag conversation-history sharing and hosted-agent deployment, though their fit with the skill’s purpose is uncertain.

Consider the unpinned MCP package, what conversation context may be sent to Wiro, and whether you need hosted-agent deployment before installing. The scan was partial because two local references were unresolved, so the available evidence is incomplete; the verdict is suspicious, not a claim that the author is malicious.

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
  • Output HandlingUnvalidated Output Injection, Cross-Context Output, Unbounded Output
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (10)

Context Leakage

High
Category
Data Exfiltration
Confidence
85% confidence
Finding

Code or instructions that leak agent conversation context to external services, potentially exposing sensitive user interactions.

Content

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

md
- For OpenAI-style code, use the gateway at base URL `https://llm.wiro.ai/v1`: `POST /chat/completions` and `POST /responses`. Anthropic SDKs use the origin `https://llm.wiro.ai` (`/v1/messages`).
- Auth: `Authorization: Bearer YOUR_API_KEY` for API Key Only, `Bearer YOUR_API_KEY:YOUR_API_SECRET` for Signature.
- Model ids are lowercase `owner/model`. `GET /v1/models` lists the gateway models; check `capabilities.endpoints` and `supported_parameters` before you rely on a feature. LLMs missing from that list still run through Run.
- Send the conversation history in `messages` on every request. Output is text only; make images, video and audio through Run.
- `max_completion_tokens` also covers reasoning tokens, so keep it at 512 or more.
- The billed amount is in `usage.cost`.

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% 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 · SKILL.md (reported line 14)May include surrounding context.

md
## Choose a route

- **You are making something for the user now and Wiro MCP tools are available** (`search_models`, `get_model_schema`, `run_model` and others): use them, they call the API below for you. Call `get_account` first to check the connection and the balance, and read `get_playbook` (topics such as `models`, `workflows`, `agents`, `billing`) before a multi-step job.
- **You are writing application code, or there are no MCP tools:** use the REST API at `https://api.wiro.ai/v1`. The HTTP endpoints in steps 1 to 4 are all POST.
- **Chat or LLM calls from code that uses an OpenAI or Anthropic SDK:** use the LLM gateway (see LLMs).

Connecting the MCP server, if the user wants it:

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% 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 · SKILL.md (reported line 46)May include surrounding context.

1. Find a model

bash
curl -s -X POST "https://api.wiro.ai/v1/Tool/List" \
  -H "Content-Type: application/json" -H "x-api-key: ${WIRO_API_KEY}" \
  -d '{"search": "flux", "limit": "20", "summary": true, "hideworkflows": true}'

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% 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 · SKILL.md (reported line 56)May include surrounding context.

  • Read the model before running it:
bash
curl -s -X POST "https://api.wiro.ai/v1/Tool/Detail" \
  -H "Content-Type: application/json" -H "x-api-key: ${WIRO_API_KEY}" \
  -d '{"slugowner": "OWNER_SLUG", "slugproject": "MODEL_SLUG"}'

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% 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 · SKILL.md (reported line 91)May include surrounding context.

Poll Task/Detail with the task token or the task id:

bash
curl -s -X POST "https://api.wiro.ai/v1/Task/Detail" \
  -H "Content-Type: application/json" -H "x-api-key: ${WIRO_API_KEY}" \
  -d '{"tasktoken": "TASK_TOKEN"}'   # or -d '{"taskid": "TASK_ID"}'

MCP server referenced without pinned version: 'npx -y @wiro-ai/wiro-mcp'.

Medium
Category
MCP Rug Pull
Confidence
96% confidence
Finding

The local MCP installation command automatically downloads and executes an unpinned npm package, allowing its executed code to change without review. A compromised release could execute with the user's privileges and access the Wiro credentials supplied to the server; the command is optional, which limits exposure.

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 · SKILL.md (reported line 35)May include surrounding context.

NONCE=$(date +%s) SIGNATURE=$(printf '%s' "${WIRO_API_SECRET}${NONCE}"
| openssl dgst -sha256 -hmac "${WIRO_API_KEY}" | awk '{print $NF}')

add to the curl call: -H "x-nonce: ${NONCE}" -H "x-signature: ${SIGNATURE}"

text

- The LLM gateway and the hosted MCP server do not take the nonce and signature. They take `Authorization: Bearer YOUR_API_KEY`, or `Bearer YOUR_API_KEY:YOUR_API_SECRET` for a Signature project.

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% 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 · SKILL.md (reported line 74)May include surrounding context.

3. Run the model

bash
curl -s -X POST "https://api.wiro.ai/v1/Run/{owner-slug}/{model-slug}" \
  -H "Content-Type: application/json" -H "x-api-key: ${WIRO_API_KEY}" \
  -d '{"prompt": "A futuristic city at sunset"}'
# {"result": true, "errors": [], "taskid": "...", "socketaccesstoken": "..."}

The skill instructs sending conversation history to Wiro without a privacy warning.

Medium
Category
Output Handling
Confidence
94% confidence
Finding

The instruction sends conversation history to an external service on every request, potentially including sensitive context beyond the immediate generation task. Although the skill identifies Wiro as the API provider, it does not warn users that their conversation history will be disclosed to that service.

Content

No source excerpt is available for this finding.

The skill expands from generating model outputs to deploying persistent, subscription-billed hosted agents.

Medium
Category
Excessive Agency
Confidence
94% confidence
Finding

The manifest describes finding, pricing and running models to collect generative outputs. This section additionally directs use of deploy_agent to provision persistent assistants with memory, external-service connections and monthly plans charged immediately to the wallet. Requiring confirmation mitigates unauthorized spending but does not make this infrastructure-provisioning capability match the declared scope.

Content

No source excerpt is available for this finding.