Back to skill

Security audit

Poyo Gpt Image 1 5

Security checks for vulnerabilities and agentic risk

Overview

This is a straightforward PoYo image-generation API helper, with privacy and API-key handling cautions but no evidence of malicious behavior.

Install this only if you trust PoYo with the prompts, image URLs, callback URLs, and payload data you submit. Use POYO_API_KEY from an environment or secret manager instead of passing the key on the command line, and avoid submitting secrets, private internal URLs, regulated data, or sensitive images unless approved.

Vulnerability Patterns
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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)

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/submit_gpt_image_1_5.sh:4
Finding
API Key Exposure Through Command-Line Arguments## Vulnerability Details **File Location**: `scripts/submit_gpt_image_1_5.sh`, lines 4–7 **Vulnerability Type**: API key exposure through process arguments and shell history **Risk Level**: Medium ### Vulnerable Code ```sh api_key="${POYO_API_KEY:-${1:-}}" if [ -z "$api_key" ]; then echo "Usage: submit_gpt_image_1_5.sh [api_key] [payload.json]" >&2 echo "Or set POYO_API_KEY and pass [payload.json]. If no payload file is given, JSON is read from stdin." >&2 exit 1 fi ``` ### Technical Analysis The script permits `POYO_API_KEY` to be supplied as its first positional command-line argument and explicitly advertises that invocation method. Secrets passed through command-line arguments can be exposed through shell history, process inspection facilities, audit records, diagnostic tooling, job metadata, or command logging. Although the key is transmitted to the declared PoYo HTTPS endpoint, accepting it through an argument creates an unnecessary local disclosure channel. Exploitation requires access to a system or record capable of observing the invocation, such as another appropriately privileged local account, an administrator, a monitoring agent, or a party with access to retained shell or orchestration logs. ### Attack Path 1. A user follows the advertised usage and invokes the script with a PoYo API key as the first argument. 2. The full command may be retained in shell history or exposed temporarily through process and audit metadata. 3. An attacker with access to that data retrieves the API key. 4. The attacker reuses the bearer credential directly against the PoYo API. 5. Requests are submitted under the victim's account until the credential is revoked or otherwise becomes invalid. ### Impact Assessment A disclosed key may allow unauthorized use of the victim's PoYo account within the permissions assigned to that key. Potential consequences include unauthorized or billable image-generation requests, quota consumption, and access to API operations ...[truncated 233 chars]
Remediation
## Remediation Suggestions - Remove support for accepting the API key as a positional command-line argument. - Require `POYO_API_KEY` to be supplied through a protected environment or secret-management facility. - Change the key assignment to fail unless the environment variable exists: ```sh api_key="${POYO_API_KEY:?POYO_API_KEY must be set}" ``` - Update the usage instructions so they no longer encourage placing credentials in command lines. - In automated environments, inject the key from the platform's secret store and prevent it from being included in logs or job metadata. - Rotate any API key previously passed on a command line if shell history, audit records, or execution logs may be accessible to untrusted parties.
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
Findings (10)

Hidden Instructions

High
Category
Prompt Injection
Content
---
name: poyo-gpt-image-1-5
description: Use PoYo AI GPT Image 1.5 through the `https://api.poyo.ai/api/generate/submit` endpoint. Use when a user wants to generate or edit media with this model family, prepare PoYo-compatible payloads, submit jobs, or poll task status for `gpt-image-1.5`, `gpt-image-1.5-edit`.
metadata: {"openclaw": {"homepage":"https://poyo.ai/models/gpt-image-1-5-api", "requires": {"bins": ["curl"], "env": ["POYO_API_KEY"]}, "primaryEnv": "POYO_API_KEY"}}
Confidence
60% confidence
Finding
Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Credential Access

High
Category
Privilege Escalation
Content
Content-Type: application/json
```

Get API keys from <https://poyo.ai/dashboard/api-key>.

Recommended skill env var:
Confidence
70% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

External Transmission

Medium
Category
Data Exfiltration
Content
---
name: poyo-gpt-image-1-5
description: Use PoYo AI GPT Image 1.5 through the `https://api.poyo.ai/api/generate/submit` endpoint. Use when a user wants to generate or edit media with this model family, prepare PoYo-compatible payloads, submit jobs, or poll task status for `gpt-image-1.5`, `gpt-image-1.5-edit`.
metadata: {"openclaw": {"homepage":"https://poyo.ai/models/gpt-image-1-5-api", "requires": {"bins": ["curl"], "env": ["POYO_API_KEY"]}, "primaryEnv": "POYO_API_KEY"}}
---
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
---
name: poyo-gpt-image-1-5
description: Use PoYo AI GPT Image 1.5 through the `https://api.poyo.ai/api/generate/submit` endpoint. Use when a user wants to generate or edit media with this model family, prepare PoYo-compatible payloads, submit jobs, or poll task status for `gpt-image-1.5`, `gpt-image-1.5-edit`.
metadata: {"openclaw": {"homepage":"https://poyo.ai/models/gpt-image-1-5-api", "requires": {"bins": ["curl"], "env": ["POYO_API_KEY"]}, "primaryEnv": "POYO_API_KEY"}}
---
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
---
name: poyo-gpt-image-1-5
description: Use PoYo AI GPT Image 1.5 through the `https://api.poyo.ai/api/generate/submit` endpoint. Use when a user wants to generate or edit media with this model family, prepare PoYo-compatible payloads, submit jobs, or poll task status for `gpt-image-1.5`, `gpt-image-1.5-edit`.
metadata: {"openclaw": {"homepage":"https://poyo.ai/models/gpt-image-1-5-api", "requires": {"bins": ["curl"], "env": ["POYO_API_KEY"]}, "primaryEnv": "POYO_API_KEY"}}
---
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
---
name: poyo-gpt-image-1-5
description: Use PoYo AI GPT Image 1.5 through the `https://api.poyo.ai/api/generate/submit` endpoint. Use when a user wants to generate or edit media with this model family, prepare PoYo-compatible payloads, submit jobs, or poll task status for `gpt-image-1.5`, `gpt-image-1.5-edit`.
metadata: {"openclaw": {"homepage":"https://poyo.ai/models/gpt-image-1-5-api", "requires": {"bins": ["curl"], "env": ["POYO_API_KEY"]}, "primaryEnv": "POYO_API_KEY"}}
---
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Missing User Warnings

Medium
Confidence
90% confidence
Finding
The skill instructs sending prompts and optional image URLs to a third-party API but does not clearly warn users that their content leaves the local system and is transmitted to PoYo. This creates a privacy and data-handling risk because users may unknowingly submit sensitive prompts, internal URLs, or proprietary images to an external service.

External Transmission

Medium
Category
Data Exfiltration
Content
## Submission example

```bash
curl -sS https://api.poyo.ai/api/generate/submit   -H 'Authorization: Bearer YOUR_API_KEY'   -H 'Content-Type: application/json'   -d '{
  "model": "gpt-image-1.5",
  "callback_url": "https://your-domain.com/callback",
  "input": {
Confidence
60% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
body=$(cat)
fi

curl -sS https://api.poyo.ai/api/generate/submit   -H "Authorization: Bearer $api_key"   -H 'Content-Type: application/json'   -d "$body"
Confidence
89% confidence
Finding
The hardcoded external destination to api.poyo.ai is a genuine security concern in a skill because it routes data to a fixed remote service outside the local trust boundary. Even though contacting an API is the apparent purpose of the script, the combination of a remote endpoint plus arbitrary request body input means the skill can export sensitive information if invoked with confidential data.

External Transmission

Medium
Category
Data Exfiltration
Content
body=$(cat)
fi

curl -sS https://api.poyo.ai/api/generate/submit   -H "Authorization: Bearer $api_key"   -H 'Content-Type: application/json'   -d "$body"
Confidence
89% confidence
Finding
The hardcoded external destination to api.poyo.ai is a genuine security concern in a skill because it routes data to a fixed remote service outside the local trust boundary. Even though contacting an API is the apparent purpose of the script, the combination of a remote endpoint plus arbitrary request body input means the skill can export sensitive information if invoked with confidential data.

Static analysis

No suspicious patterns detected.