T09 · Insecure Skill Coding Practices
- Location
SKILL.md:75- Finding
Permanent Public Exposure of Uploaded Local Images
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 75–89
Vulnerability Type: Permanent unauthenticated publication of user-provided files
Risk Level: MediumVulnerable Code Snippet
The following is an English translation of the relevant skill instructions:
markdown If the user provides a local file path instead of a public direct link, first upload the file to obtain a direct link, and then call this API. - URL: POST https://www.flyelep.cn/prod-api/poster-design/api/v1/file/upload - Request method: multipart/form-data - The fixed file field name is `file` - Authentication: pass `secretKey` in the request header Use `data.fullPath` from a successful response as the public direct link. It is permanently valid and does not contain a signature. { "code": 200, "data": { "relativePath": "cos_ai_agent/2026-08-11/3f2a9c1b7d84e6f5a012.png", "fullPath": "https://agent-1404002717.cos.ap-guangzhou.myqcloud.com/cos_ai_agent/2026-08-11/3f2a9c1b7d84e6f5a012.png" } }Technical Analysis
The skill directs the agent to upload local user images to a third-party storage service whenever the user supplies a local path. The resulting
fullPathis explicitly described as permanently valid and unsigned. Consequently, access to the stored image is controlled only by possession of its URL; no authentication, expiration, or revocation mechanism is documented.This creates an insecure data-handling condition because a user requesting image matting may not reasonably expect the original image to be published through a permanent public URL. The skill does not require informed consent immediately before upload, identify a retention period, offer deletion, or prevent sensitive images from being submitted.
Attack Path
- A user supplies a local image to the agent for background removal.
- The agent follows
SKILL.mdand uploads the file to Flyelep's upload API using the user' ...[truncated 1098 chars]
- Remediation
View remediation
Remediation Suggestions
- Require explicit informed consent immediately before uploading a local file. Clearly state that the current service creates a permanently accessible, unsigned public URL.
- Replace public permanent objects with private storage protected by authentication and short-lived signed URLs.
- Establish and document a minimal retention period, followed by automatic deletion of both source and processed images.
- Provide a verified deletion endpoint and invoke it after processing unless the user explicitly requests retention.
- Avoid returning or logging full object URLs in persistent transcripts, telemetry, and diagnostic output.
- Add a sensitivity check and refuse uploads involving credentials, identity documents, medical images, private photographs, or confidential business material when private storage and deletion guarantees are unavailable.
- Document the third-party processor, storage region, retention policy, access controls, and privacy implications before collecting user consent.
- If the provider cannot support access control, expiration, and deletion, require users to supply their own appropriately secured image URL rather than uploading local files through this endpoint.
