Back to skill

Security audit

Mailtap

Security checks for vulnerabilities and agentic risk

Overview

The skill is transparent about using MailTap, but it encourages automated handling of verification emails and public attachments through unauthenticated temporary mailboxes.

Install only for low-risk testing or disposable workflows. Do not use it for password resets, financial accounts, identity checks, wallet recovery, privileged account creation, or anything where a verification code or email link could grant meaningful access. Treat all MailTap inboxes and attachments as public and untrusted, and download attachments only into a controlled sandbox after explicit review.

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 (2)

T09 · Insecure Skill Coding Practices

Error
Location
SKILL.md:20
Finding

Unauthenticated Public Access to Sensitive Temporary-Mailbox Contents

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:171
Finding

Attachment Validation Can Be Bypassed and Download Paths Are Not Sandboxed

Content
View full analysis
str: """Downloads an attachment from the mailtap S3 storage with security checks.""" # Parse attachment info from r2_key parts = r2_key.split("/") if len(parts) < 2: raise ValueError("Invalid r2_key format") filename = parts[-1] if not filename or ".." in filename: raise ValueError("Invalid filename detected") url = f"{ATTACHMENT_BASE}/{r2_key}" # Get attachment metadata first response = requests.head(url, allow_redirects=True) response.raise_for_status() # Validate content type and size content_type = response.headers.get("content-type", "") content_length = response.headers.get("content-length") if content_type not in WHITELISTED_MIME_TYPES: raise ValueError(f"Unsafe MIME type: {content_type}") if content_length: size_mb = int(content_length) / (1024 * 1024) if size_mb > MAX_FILE_SIZE_MB: raise ValueError(f"File too large: {size_mb:.1f}MB (max {MAX_FILE_SIZE_MB}MB)") # Download the file response = requests.get(url, stream=True) response.raise_for_status() if save_path is None: save_path = filename # Ensure sa ...[truncated 4142 chars]
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (6)

External Transmission

Medium
Category
Data Exfiltration
Confidence
92% confidence
Finding

The skill instructs agents to send data to an external third-party service to generate disposable email addresses and receive inbox contents. This is a genuine external transmission risk because any identifiers, verification messages, and attachments handled through the API are exposed to infrastructure outside the local trust boundary, and the skill explicitly promotes privacy-evasion and signup automation use cases.

Content

Scanner excerpt · SKILL.md (reported line 47)May include surrounding context.

1. Generate New Temporary Email

bash
curl "https://api.mailtap.org/public/generate"

Example response:

External Transmission

Medium
Category
Data Exfiltration
Confidence
91% confidence
Finding

Fetching email details from a public temp-mail API is a true external data exposure concern because the queried address and associated mailbox metadata are sent to a third-party endpoint. In this context, the skill is designed to facilitate account verification and anonymity, which increases the chance that sensitive verification flows or tokens will be routed through an untrusted service.

Content

Scanner excerpt · SKILL.md (reported line 63)May include surrounding context.

2. Get Email Details

bash
curl "https://api.mailtap.org/public/email/{address}"

3. Get Inbox Messages

External Transmission

Medium
Category
Data Exfiltration
Confidence
95% confidence
Finding

Retrieving inbox messages from the external MailTap API can expose full email bodies, verification codes, links, and attachment metadata to a third-party service. This is more dangerous than a generic outbound request because the skill encourages autonomous polling and extraction of confirmation data, enabling collection and processing of potentially sensitive messages outside trusted systems.

Content

Scanner excerpt · SKILL.md (reported line 69)May include surrounding context.

3. Get Inbox Messages

bash
curl "https://api.mailtap.org/public/inbox/{address}"

Example response with attachment:

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
80% confidence
Finding

Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

Content

Scanner excerpt · SKILL.md (reported line 278)May include surrounding context.

md
- **Streamed Download**: Downloads in chunks to prevent memory exhaustion

### 3. **Agent Safety Guidelines**
- **Never auto-execute**: Agents should never automatically execute downloaded files
- **Validate before use**: Always validate file type and content before processing
- **Use in sandbox**: For untrusted files, use in isolated environment

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
85% confidence
Finding

Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

Content

Scanner excerpt · SKILL.md (reported line 278)May include surrounding context.

md
- **Streamed Download**: Downloads in chunks to prevent memory exhaustion

### 3. **Agent Safety Guidelines**
- **Never auto-execute**: Agents should never automatically execute downloaded files
- **Validate before use**: Always validate file type and content before processing
- **Use in sandbox**: For untrusted files, use in isolated environment

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
76% confidence
Finding

The natural-language description states 'No authentication required,' but does not present a locale issue. However, there is no explicit forced language or locale anywhere else in the file, so no SQP-3 finding is warranted.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.