Back to skill

Security audit

Poyo Grok Imagine

Security checks for vulnerabilities and agentic risk

Overview

This skill is a straightforward PoYo video-generation integration, with some privacy and API-key handling cautions but no evidence of hidden or malicious behavior.

Install only if you are comfortable sending generation prompts, image URLs, callback URLs, and related task data to PoYo. Prefer setting POYO_API_KEY in a protected environment variable, avoid passing the key as a command-line argument, and rotate the key if it has appeared in shell history, logs, or process telemetry.

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_grok_imagine.sh:4
Finding

PoYo API Key Exposed Through Process Command-Line Arguments

Content
View full analysis
&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 payload="${2:-${1:+}}" if [ -n "${POYO_API_KEY:-}" ]; then payload="${1:-}" fi if [ -n "$payload" ] && [ "$payload" != "$api_key" ]; then body=$(cat "$payload") else body=$(cat) fi curl -sS https://api.poyo.ai/api/generate/submit -H "Authorization: Bearer $api_key" -H 'Content-Type: application/json' -d "$body" ``` ### Technical Analysis The script supports supplying the PoYo API key as its first positional argument. Secrets passed this way can be retained in shell history and captured by command telemetry, audit systems, process wrappers, or other local monitoring facilities. Additionally, regardless of whether the key originates from the environment or a positional argument, the script expands it directly into curl's authorization-header argument: ```sh -H "Authorization: Bearer $api_key" ``` Consequently, the resulting curl process receives the complete Bearer credential in its argument vector. On systems where process arguments are visible to other users, privileged monitoring agents, audit services, or diagnostic tooling, the credential may be recorded or observed while the request is running. The issue does not enable a remote attacker to retrieve the key directly. Exploitation requires access to process metadata, command history, telemetry, or logs on the host where the script runs. ### Attack Path 1. A victim invokes the script with a valid PoYo API key, either as the first positional argument or through `POYO_API_KEY`. 2. If supplied positionally, the key m ...[truncated 1045 chars]
Remediation
View remediation
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 (12)

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-grok-imagine
description: Use PoYo AI Grok Imagine Video for short text-to-video and image-to-video generation with motion-style controls through the `https://api.poyo.ai/api/generate/submit` endpoint. Use when a user wants 6s or 10s clips, optional `mode` styling, or PoYo payloads for `grok-imagine`.
metadata: {"openclaw": {"homepage":"https://poyo.ai/models/grok-imagine", "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
87% confidence
Finding

The skill advertises use of an external API endpoint in its description, which means normal operation involves transmitting user-supplied content off-platform. By itself this is expected for an integration skill, but without clear safety/privacy notice it still represents a real external-transmission risk.

Content

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

md
---
name: poyo-grok-imagine
description: Use PoYo AI Grok Imagine Video for short text-to-video and image-to-video generation with motion-style controls through the `https://api.poyo.ai/api/generate/submit` endpoint. Use when a user wants 6s or 10s clips, optional `mode` styling, or PoYo payloads for `grok-imagine`.
metadata: {"openclaw": {"homepage":"https://poyo.ai/models/grok-imagine", "requires": {"bins": ["curl"], "env": ["POYO_API_KEY"]}, "primaryEnv": "POYO_API_KEY"}}
---

External Transmission

Medium
Category
Data Exfiltration
Confidence
95% confidence
Finding

The workflow explicitly instructs POSTing bearer-authenticated JSON to PoYo and polling remote task status, confirming that user inputs and job metadata are transmitted to a third party. In context, this is intended functionality, but it is still security-relevant because it can expose sensitive content if users are not warned.

Content

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

md
## Quick workflow

1. Choose the right model id for the requested output.
2. Build the request body for `POST https://api.poyo.ai/api/generate/submit`.
3. Send Bearer-authenticated JSON with `Authorization: Bearer <POYO_API_KEY>`.
4. Save the returned `task_id`.
5. Poll unified task status or wait for `callback_url` notifications.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The skill directs users to send prompts, image URLs, and potentially callback data to PoYo's external API using a bearer token, but it does not disclose that this data leaves the local/platform boundary. This creates a privacy and data-handling risk because users may provide sensitive prompts or private image references without informed consent.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

This reference directs a skill to send user prompts and optional callback URLs to a third-party API, but it does not include any warning, consent guidance, or data-handling caveat for users. In an agent skill context, prompts may contain sensitive user data, and callback URLs can expose internal endpoints or enable unreviewed outbound data flows to external infrastructure.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
84% confidence
Finding

This example operationalizes external transmission by showing a full curl request with authorization and user-controlled fields, making the outbound data flow concrete rather than hypothetical. In the skill context, that increases risk because users or downstream code may copy this pattern without safeguards around sensitive content and callback handling.

Content

Scanner excerpt · references/api.md (reported line 42)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": "grok-imagine",
  "callback_url": "https://your-domain.com/callback",
  "input": {

External Transmission

Medium
Category
Data Exfiltration
Confidence
84% confidence
Finding

This example operationalizes external transmission by showing a full curl request with authorization and user-controlled fields, making the outbound data flow concrete rather than hypothetical. In the skill context, that increases risk because users or downstream code may copy this pattern without safeguards around sensitive content and callback handling.

Content

Scanner excerpt · references/api.md (reported line 42)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": "grok-imagine",
  "callback_url": "https://your-domain.com/callback",
  "input": {

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

md
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
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/submit_grok_imagine.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
70% 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/submit_grok_imagine.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"

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

This code performs an HTTP request to an external service and transmits both the request body and a bearer token, but it provides no confirmation prompt, print statement, or explanatory comment warning the user about that transmission. For a code file, network calls that send user or system data should include some visible disclosure unless already clearly documented elsewhere, which is not evident in this file.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.