Back to skill

Security audit

Poyo Kling 1 6

Security checks for vulnerabilities and agentic risk

Overview

This skill is a straightforward PoYo Kling 1.6 API helper, with expected external API submission and no hidden persistence or destructive behavior found.

Install only if you trust PoYo with the prompts, image URLs, and callback URLs you submit, and keep POYO_API_KEY server-side. Avoid using the helper on shared machines where other local users or monitoring tools can inspect process arguments; rotate the key if it may have been exposed.

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

API Key Exposed Through Process Command-Line Arguments

Content
View full analysis

Vulnerability Details

File Location: scripts/submit_kling_1_6.sh, lines 12–16
Vulnerability Type: Bearer token disclosure through process arguments
Risk Level: Medium

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 executing curl, placing the complete bearer token in the process argument vector as part of the --header argument. While the request is running, local users or monitoring software with sufficient process-inspection privileges may be able to retrieve that argument through facilities such as ps, /proc, audit logs, process telemetry, or diagnostic tooling.

Although the token is not hardcoded in the repository and transport uses HTTPS, passing it as a command-line argument weakens secret confidentiality at the local host boundary. This also conflicts with the project's documented requirement to avoid exposing API keys in logs.

Attack Path

  1. A user sets POYO_API_KEY and invokes scripts/submit_kling_1_6.sh with a payload.
  2. The shell expands ${POYO_API_KEY} into the curl command-line argument vector.
  3. During request execution, a local observer with permission to inspect the process command line captures the expanded Authorization header.
  4. The observer extracts the bearer token.
  5. The observer reuses the token to authenticate unauthorized requests to the PoYo API until the key is revoked or expires.

Exploitation requires local process visibility or access to command-line telemetry; it is not directly exploitable by a remote party solely through this script.

Impact Assessment

A captured API key could allow an attacker to submit requests under the victim's PoYo account, consume paid quota, incur costs, and access any A ...[truncated 196 chars]

Remediation
View remediation

Remediation Suggestions

Avoid placing the bearer token directly in curl command-line arguments. Provide the sensitive header through a protected configuration source, such as a temporary curl configuration file with permissions set to 0600, and guarantee cleanup with a shell trap.

Recommended hardening measures:

  1. Create temporary secret-bearing files with a restrictive umask, such as umask 077.
  2. Register trap cleanup immediately after creating the temporary file.
  3. Write the authorization header to the protected curl configuration rather than passing it through --header on the command line.
  4. Ensure secret-bearing files are never stored in the project directory, committed, logged, or retained after execution.
  5. Limit process and telemetry access on shared systems.
  6. Redact authorization headers from shell tracing, audit output, and diagnostic logs.
  7. Rotate POYO_API_KEY if process telemetry may already have recorded it.
  8. Prefer short-lived, narrowly scoped credentials when supported by the service.
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-kling-1-6
description: Kling 1.6 video generation on PoYo / poyo.ai via `https://api.poyo.ai/api/generate/submit`; use for `kling-1.6/standard`, `kling-1.6/pro`, text-to-video, image-to-video, start and end frame guidance, elements with reference images, duration, aspect ratio, negative prompt, cfg scale, polling, and webhooks.
metadata: {"openclaw":{"homepage":"https://poyo.ai/models/kling-1-6","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
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 54)May include surrounding context.

Standard 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_kling_1_6.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
91% confidence
Finding

This shell script sends the contents of the provided payload file to https://api.poyo.ai via curl, which is a safety-relevant network operation involving user/system data. The file contains no confirmation prompt, warning message, or explanatory comment/docstring disclosing that the payload will be transmitted externally.

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 6)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 55)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 74)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 96)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_kling_1_6.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.