T09 · Insecure Skill Coding Practices
- Location
SKILL.md:15- Finding
Local PDFs Are Required to Be Uploaded to Public Storage
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 15–16
Vulnerability Type: Excessive public data exposure
Risk Level: MediumVulnerable Code Snippet:
markdown - For local PDFs the agent must first upload to public storage (S3, Supabase Storage, etc.) so Revid can fetch it.Technical Analysis
The Skill instructs the agent to place local PDF documents in public storage so that the external Revid service can retrieve them. Public access is broader than the minimum privilege required for service-to-service document retrieval. A local PDF may contain confidential business information, personal data, unpublished research, or copyrighted material.
The instruction does not require explicit user consent, sensitivity classification, a short expiration period, access restrictions, or deletion after processing. Consequently, a document may remain publicly retrievable beyond the render operation. Although an attacker would generally need to discover, receive, or infer the object URL, public accessibility removes authentication as a protection once the URL is known.
Transmission of the API key to
https://www.revid.aiand submission of a source URL to that service are consistent with the declared rendering workflow. The identified issue is specifically the requirement to expose local documents publicly rather than use a narrowly scoped transfer mechanism.Attack Path
- A user asks the agent to summarize a local PDF containing sensitive information.
- Following
SKILL.md, the agent uploads the PDF to an S3 bucket, Supabase Storage, or equivalent service with public read access. - The public URL is submitted to Revid for processing.
- The URL is disclosed through logs, command history, render metadata, shared messages, referrer data, storage enumeration, or another unintended channel.
- An unauthorized party uses the URL to retrieve the PDF without authentication.
- If the object is ...[truncated 625 chars]
- Remediation
View remediation
Remediation Suggestions
- Prefer a direct, authenticated file-upload endpoint provided by the rendering service.
- If URL-based retrieval is unavoidable, use a private storage object with a short-lived, unguessable presigned URL granting read-only access to that single object.
- Set the URL expiration to the shortest practical render-ingestion window and revoke access immediately after retrieval or completion.
- Automatically delete the uploaded object after processing, including on timeout and failure paths.
- Obtain explicit user consent before transferring a local document to third-party infrastructure and clearly identify the recipient and retention implications.
- Warn users not to upload secrets, credentials, regulated records, or other highly sensitive documents unless an approved protected transfer mechanism is available.
- Avoid placing source URLs in logs, command output, analytics, or persistent conversation memory.
- Document Revid's data-processing and retention behavior so users can make an informed decision before submission.
