T09 · Insecure Skill Coding Practices
Error
- Location
- SKILL.md:20
- Finding
- Unauthenticated Public Access to Sensitive Temporary-Mailbox Contents<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:20-55`, `SKILL.md:252-258`, `openapi.json:69-107`, `openapi.json:155-226` **Vulnerability Type**: Unauthenticated exposure of email messages, verification codes, links, and attachment identifiers **Risk Level**: High ### Vulnerable Code and Configuration ```markdown No authentication or API key is required — all endpoints are public and use simple HTTP GET requests. This skill does not store, proxy, or modify any email data. All operations communicate directly with the official MailTap public API. **Ideal for AI agents performing tasks such as:** - Registering on websites/services without exposing real email addresses - Capturing verification codes, one-time links, or confirmation emails - Automating web3 airdrops, form submissions, or testing flows that require email verification - Privacy-focused workflows where email traceability must be avoided - Downloading email attachments when available **Base URL:** `https://api.mailtap.org` All responses are returned in JSON format. ## Core Capabilities The skill exposes three primary endpoints: 1. **Generate** a new temporary email address 2. **Retrieve** details of an existing email address 3. **Fetch** all messages in the inbox (including attachments metadata) Agents can chain operations autonomously (generate → wait → poll inbox → extract data → download attachments). ## Usage Guide for Agents Agents should use standard HTTP tools (`curl`, `fetch`, `requests`, etc.) to interact with the API. ### 1. Generate New Temporary Email ```bash curl "https://api.mailtap.org/public/generate" ``` ### 2. Get Email Details ```bash curl "https://api.mailtap.org/public/email/{address}" ``` ### 3. Get Inbox Messages ```bash curl "https://api.mailtap.org/public/inbox/{address}" ``` ``` The security limitations are explicitly documented as follows: ```markdown ## Important Notes & Limitations - Emails expire automatically after **30 minutes**. - Atta ...[truncated 3904 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Require a cryptographically random mailbox access token separate from the email address. 2. Require that token on `/public/email/{address}` and `/public/inbox/{address}` requests. 3. Use authenticated, short-lived, signed URLs for attachments rather than permanently public object keys. 4. Ensure attachment URLs are scoped to one object, expire quickly, and cannot be enumerated. 5. Avoid placing mailbox addresses in logs, analytics, URLs exposed to unrelated systems, or agent-visible output unless required. 6. Add a prominent warning that temporary public mailboxes must not be used for password resets, financial accounts, wallet recovery, privileged account creation, or other high-impact authentication flows. 7. Redact verification codes, one-time links, and sensitive message bodies from diagnostic logs. 8. Apply rate limiting and abuse monitoring to inbox lookups, while recognizing that rate limiting is not a substitute for authorization. 9. If the external service cannot support mailbox authentication, constrain the Skill to low-risk testing workflows and require explicit user confirmation before using it for real account verification. ]]>
