Back to skill

Security audit

the ai painting interface of suichuang api

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent image-generation connector, but it instructs users to expose an API key in URL query parameters during polling.

Review before installing. Use only a limited, revocable API key, avoid sensitive prompts, and prefer a version that authenticates polling with headers rather than putting the key in the URL. Rotate any key that has already been used in query strings.

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
SKILL.md:42
Finding
API Credential Exposure Through URL Query Parameters<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:42`, `SKILL.md:70`, and `SKILL.md:125-126` **Vulnerability Type**: API credential disclosure through query-string transmission **Risk Level**: Medium ### Vulnerable Code Snippet ```text https://api.wuyinkeji.com/api/async/detail?key=【your API key】&id={task_id} ``` The same polling URL appears at lines 42 and 70. Lines 125-126 additionally instruct users that submission keys may be placed in URL parameters and that polling keys must be placed in URL parameters. ### Technical Analysis The skill explicitly requires the shared API credential to be included in the polling endpoint's query string. Query strings are commonly captured in HTTP access logs, reverse-proxy logs, monitoring platforms, browser or client histories, exception reports, and debugging telemetry. Although HTTPS protects the URL while it is transmitted over the network, it does not prevent the complete URL from being recorded at either endpoint or by authorized infrastructure components. The document already specifies an `Authorization` header for the polling request. Repeating the credential in the URL therefore expands its exposure without providing a necessary security benefit. The displayed credential is a placeholder rather than a live secret, but following these instructions with a real credential would create the vulnerability. ### Attack Path 1. An operator configures the skill with a valid API credential. 2. The agent constructs a polling request containing that credential in the `key` query parameter. 3. A client, reverse proxy, API gateway, monitoring service, or application server records the complete request URL. 4. A user with access to those records, or an attacker who compromises the relevant logging system, extracts the credential. 5. The exposed credential is reused against the image-generation API until it is revoked or expires. This exploitation path depends on an attacker obtaining access to a system that r ...[truncated 491 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Remove the `key` parameter from every request URL, including both polling examples. 2. Transmit the credential exclusively in an HTTPS request header, preferably using a standard scheme such as: ```http Authorization: Bearer ${NANABANANA_API_KEY} ``` 3. Do not duplicate the credential in the JSON request body unless the external API strictly requires it. 4. Load the credential from a protected environment variable or secret manager rather than embedding it in the skill document or generated commands. 5. Configure clients, proxies, API gateways, and monitoring systems to redact `Authorization`, `key`, token, and credential fields. 6. Apply least privilege, usage limits, expiration, and rotation policies to the credential. 7. Rotate any real credential that has previously been transmitted in a query string and review relevant logs for unauthorized use. 8. If the provider cannot support header-only authentication, use a short-lived scoped token and ensure all infrastructure redacts the query parameter before logging. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • 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 (5)

External Transmission

Medium
Category
Data Exfiltration
Content
### 第一步:提交任务

- 方式:POST
- 地址:`https://api.wuyinkeji.com/api/async/image_nanoBanana2`
- Headers:
  - Authorization: `【你的密钥】`
  - Content-Type: application/json
Confidence
97% confidence
Finding
This skill instructs the agent to send user-supplied prompts and credentials to an external domain, which is a data exfiltration surface by design. In context, an image-generation skill legitimately needs a remote API, but the danger remains because user content is transmitted off-platform and the skill includes secret-handling guidance.

External Transmission

Medium
Category
Data Exfiltration
Content
### 第二步:查询结果

- 方式:GET
- 地址:`https://api.wuyinkeji.com/api/async/detail?key=【你的密钥】&id={task_id}`
- Headers:
  - Authorization: `【你的密钥】`
Confidence
99% confidence
Finding
The polling URL places the API key in the query string, which is especially dangerous because query parameters are commonly logged by proxies, servers, analytics tools, browser histories, and monitoring systems. This increases the chance of credential leakage beyond the intended recipient.

External Transmission

Medium
Category
Data Exfiltration
Content
### 第一步:提交任务

- 方式:POST
- 地址:`https://api.wuyinkeji.com/api/async/image_nanoBanana_pro`
- Headers:
  - Authorization: `【你的密钥】`
  - Content-Type: application/json
Confidence
97% confidence
Finding
This endpoint again sends user prompts to an external image-generation service, creating a third-party data disclosure path. While expected for the feature, the skill normalizes sending potentially sensitive user content and repeats secret material in both headers and body, increasing exposure.

External Transmission

Medium
Category
Data Exfiltration
Content
### 第二步:查询结果

- 方式:GET
- 地址:`https://api.wuyinkeji.com/api/async/detail?key=【你的密钥】&id={task_id}`
- Headers:
  - Authorization: `【你的密钥】`
Confidence
99% confidence
Finding
As with the other result-query endpoint, the skill requires the API key in the URL query string during polling. Repeated polling amplifies the exposure because the secret may be written to logs many times across multiple layers of infrastructure.

Natural-Language Policy Violations

Medium
Confidence
97% confidence
Finding
The skill requires that all user prompts be translated into English before submission to a third-party image API, without user consent or disclosure. This can alter user meaning, cause unintended sharing/transformation of user content, and creates a privacy/compliance risk because the transformed prompt is externally transmitted.

Static analysis

No suspicious patterns detected.