Back to skill

Security audit

Poyo Seedream 5 Pro

Security checks for vulnerabilities and agentic risk

Overview

This skill is a narrowly scoped PoYo image-generation helper that sends reviewed payloads to PoYo with a user-provided API key, with no hidden persistence or unrelated local access found.

Install this only if you trust PoYo with the prompts, reference image URLs, callback URL, and API key used for image generation. Prefer running it in a trusted environment, avoid sensitive payload contents unless appropriate, and rotate POYO_API_KEY if local process command lines may be logged or monitored.

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_seedream_5_pro.sh:11
Finding

PoYo API Key Exposed in Process Arguments

Content
View full analysis

Vulnerability Details

File Location: scripts/submit_seedream_5_pro.sh, lines 11-15
Vulnerability Type: Bearer token disclosure through command-line 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 @"$1"

Technical Analysis

The shell expands ${POYO_API_KEY} before starting curl, placing the complete authorization header in the process argument vector. While the request is in progress, local process-inspection facilities, diagnostic utilities, audit systems, or process-monitoring agents may capture the command line and expose the bearer token.

Exploitation requires the ability to observe the curl process arguments, which is commonly available to the same operating-system user, privileged local users, or authorized monitoring infrastructure. The fixed HTTPS endpoint prevents arbitrary endpoint redirection but does not protect the credential from local disclosure.

Attack Path

  1. A legitimate user exports POYO_API_KEY and invokes the submission helper with a reviewed JSON payload.
  2. The script expands the key into the --header argument and starts curl.
  3. An attacker with sufficient local process-observation access inspects the running command line or obtains it from process telemetry.
  4. The attacker extracts the bearer token from Authorization: Bearer ....
  5. The attacker reuses the token to authenticate directly to the PoYo API until the key is revoked or expires.

Impact Assessment

Successful exploitation discloses the PoYo API credential. The attacker obtains the API permissions associated with that key and may submit unauthorized generation requests, consume account credits or quotas, and access any other PoYo operations authorized for the credential.

This i ...[truncated 198 chars]

Remediation
View remediation

Remediation Suggestions

  • Do not place bearer tokens directly in command-line arguments.
  • Pass the sensitive header through a protected input channel, such as a curl configuration supplied over standard input or a permission-restricted temporary configuration file.
  • If a temporary file is necessary, create it with mode 0600, use a securely generated path, install an exit trap to remove it, and prevent backups or logs from retaining it.
  • Remove POYO_API_KEY from the child process environment when starting curl if the header has already been supplied through another secure channel.
  • Ensure shell tracing is disabled and prevent request headers from being included in verbose output, debug logs, crash reports, or monitoring telemetry.
  • Apply least privilege to the PoYo key, rotate it periodically, and revoke it immediately if process arguments may have been captured.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (10)

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
94% confidence
Finding

The skill describes shell execution and network use, but it does not declare an enforceable tool scope such as explicit permissions or allowed-tools metadata. That creates a policy gap where an agent or runtime may permit broader command execution than the documented boundary, increasing the chance of unintended shell actions or unauthorized data handling.

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

Generation Example

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" \

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

sh
: "${POYO_API_KEY:?POYO_API_KEY is required}"

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 performs an HTTP POST to an external API and includes both a bearer token from an environment variable and the contents of a user-supplied JSON payload. The file contains no confirmation prompt, logging, comment, or docstring warning the user that local data will be transmitted to a remote 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 · SKILL.md (reported line 3)May include surrounding context.

md
: "${POYO_API_KEY:?POYO_API_KEY is required}"

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 @"$1"

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

md
: "${POYO_API_KEY:?POYO_API_KEY is required}"

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 @"$1"

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
: "${POYO_API_KEY:?POYO_API_KEY is required}"

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 @"$1"

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

md
: "${POYO_API_KEY:?POYO_API_KEY is required}"

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 @"$1"

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

md
: "${POYO_API_KEY:?POYO_API_KEY is required}"

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 @"$1"

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

sh
: "${POYO_API_KEY:?POYO_API_KEY is required}"

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 @"$1"

Static analysis

No suspicious patterns detected.