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

Content
View full analysis

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
View 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
Confidence
60% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

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

md
---
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"}}

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · references/api.md (reported line 19)May include surrounding context.

Content-Type: application/json

text

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

Recommended skill env var:

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 3)May include surrounding context.

md
---
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"}}
---

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 20)May include surrounding context.

md
---
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"}}
---

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 · references/api.md (reported line 5)May include surrounding context.

md
---
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"}}
---

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 · references/api.md (reported line 43)May include surrounding context.

md
---
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"}}
---

Missing User Warnings

Medium
Category
Not specified by scanner
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.

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 · references/api.md (reported line 43)May include surrounding context.

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": {

External Transmission

Medium
Category
Data Exfiltration
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.

Content

Scanner excerpt · scripts/submit_gpt_image_1_5.sh (reported line 22)May include surrounding context.

sh
body=$(cat)
fi

curl -sS https://api.poyo.ai/api/generate/submit   -H "Authorization: Bearer $api_key"   -H 'Content-Type: application/json'   -d "$body"

External Transmission

Medium
Category
Data Exfiltration
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.

Content

Scanner excerpt · scripts/submit_gpt_image_1_5.sh (reported line 22)May include surrounding context.

sh
body=$(cat)
fi

curl -sS https://api.poyo.ai/api/generate/submit   -H "Authorization: Bearer $api_key"   -H 'Content-Type: application/json'   -d "$body"