Back to skill

Security audit

Poyo Wan 2 2 Fast

Security checks for vulnerabilities and agentic risk

Overview

This skill is a straightforward PoYo video-generation helper that clearly discloses its external API use and API-key requirement, with one credential-handling hardening issue to consider.

Install only if you intend to use PoYo's Wan 2.2 Fast API. Use a scoped PoYo API key where possible, run submissions from a trusted machine, avoid confidential prompts or private media URLs unless you trust PoYo, and consider hardening the script before use on shared systems so the bearer token is not visible in process arguments.

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_wan_2_2_fast.sh:12
Finding

PoYo API Bearer Token Exposed in Process Command-Line Arguments

Content
View full analysis

Vulnerability Details

File Location: scripts/submit_wan_2_2_fast.sh, lines 12-16
Vulnerability Type: API credential exposure through process arguments
Risk Level: Medium

Vulnerable Code

bash
curl --fail-with-body --request POST \
  --url "https://api.poyo.ai/api/generate/submit" \
  --header "Authorization: Bearer ${POYO_API_KEY}" \
  --header "Content-Type: application/json" \
  --data @"${payload_file}"

Technical Analysis

The shell expands ${POYO_API_KEY} before starting curl, placing the complete bearer token in the process argument vector. While the request is running, local users or monitoring processes with sufficient permission may retrieve the command line through process inspection mechanisms such as /proc, process accounting, audit infrastructure, or process-monitoring utilities.

The script otherwise sends the credential only to the declared HTTPS PoYo endpoint, and no hardcoded credential is present. Nevertheless, command-line placement unnecessarily increases exposure beyond the intended network request.

Exploitation requires local process-inspection access, elevated monitoring privileges, or compromised observability infrastructure. This issue does not independently provide remote code execution or operating-system privilege escalation.

Attack Path

  1. A user exports a valid POYO_API_KEY and invokes the submission script.
  2. The shell expands the environment variable into curl's Authorization header argument.
  3. While curl is running, an attacker with adequate local inspection permissions reads its argument vector or obtains it from process-monitoring or audit records.
  4. The attacker extracts the bearer token from the captured header.
  5. The attacker reuses the token to authenticate directly to the PoYo API.
  6. Requests are submitted under the victim's account until the credential is revoked, expires, or is otherwise restricted.

Impact Assessment

...[truncated 498 chars]

Remediation
View remediation

Remediation Suggestions

Avoid placing the bearer token directly in curl's command-line arguments.

  • Supply the sensitive header through a protected curl configuration stream, anonymous file descriptor, or secure credential mechanism.
  • Remove POYO_API_KEY from curl's inherited environment after securely transferring it to the request configuration.
  • Disable shell tracing around credential-handling code and ensure process-monitoring systems do not record request headers.
  • Use short-lived, narrowly scoped API keys where supported.
  • Rotate the key if command lines may already have been captured.
  • Preserve HTTPS certificate verification and the fixed approved API hostname.

One possible hardening pattern is to pass the authorization header through curl's standard-input configuration while removing the key from curl's inherited environment:

bash
printf 'header = "Authorization: Bearer %s"\n' "$POYO_API_KEY" |
  env -u POYO_API_KEY curl --fail-with-body \
    --config - \
    --request POST \
    --url "https://api.poyo.ai/api/generate/submit" \
    --header "Content-Type: application/json" \
    --data-binary @"${payload_file}"

Confirm compatibility with the deployed curl version and prevent debug logs or shell tracing from recording the configuration stream.

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-wan-2-2-fast
description: Wan 2.2 Fast video generation on PoYo / poyo.ai via `https://api.poyo.ai/api/generate/submit`; use for `wan2.2-text-to-video-fast`, `wan2.2-image-to-video-fast`, fast text-to-video, image-to-video, first/last-frame images, 480p, 720p, seed control, task submission, polling, and webhooks.
metadata: {"openclaw":{"homepage":"https://poyo.ai/models/wan-2-2-fast","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 20)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
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 52)May include surrounding context.

Text-to-Video Example

bash
curl --fail-with-body --request POST \
  --url "https://api.poyo.ai/api/generate/submit" \
  --header "Authorization: Bearer YOUR_API_KEY" \
  --header "Content-Type: application/json" \

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_wan_2_2_fast.sh (reported line 13)May include surrounding context.

sh
payload_file="$1"

curl --fail-with-body --request POST \
  --url "https://api.poyo.ai/api/generate/submit" \
  --header "Authorization: Bearer ${POYO_API_KEY}" \
  --header "Content-Type: application/json" \

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

This shell script performs an HTTP POST to an external API using the contents of a user-supplied JSON file and an authorization header derived from POYO_API_KEY. There is no prompt, warning, or user-facing disclosure in the script indicating that local file contents will be transmitted off-host along with use of a sensitive credential.

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

md
payload_file="$1"

curl --fail-with-body --request POST \
  --url "https://api.poyo.ai/api/generate/submit" \
  --header "Authorization: Bearer ${POYO_API_KEY}" \
  --header "Content-Type: application/json" \
  --data @"${payload_file}"

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
payload_file="$1"

curl --fail-with-body --request POST \
  --url "https://api.poyo.ai/api/generate/submit" \
  --header "Authorization: Bearer ${POYO_API_KEY}" \
  --header "Content-Type: application/json" \
  --data @"${payload_file}"

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

md
payload_file="$1"

curl --fail-with-body --request POST \
  --url "https://api.poyo.ai/api/generate/submit" \
  --header "Authorization: Bearer ${POYO_API_KEY}" \
  --header "Content-Type: application/json" \
  --data @"${payload_file}"

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

md
payload_file="$1"

curl --fail-with-body --request POST \
  --url "https://api.poyo.ai/api/generate/submit" \
  --header "Authorization: Bearer ${POYO_API_KEY}" \
  --header "Content-Type: application/json" \
  --data @"${payload_file}"

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_wan_2_2_fast.sh (reported line 14)May include surrounding context.

sh
payload_file="$1"

curl --fail-with-body --request POST \
  --url "https://api.poyo.ai/api/generate/submit" \
  --header "Authorization: Bearer ${POYO_API_KEY}" \
  --header "Content-Type: application/json" \
  --data @"${payload_file}"

Static analysis

No suspicious patterns detected.