T09 · Insecure Skill Coding Practices
- Location
scripts/tempmail_otp.py:40- Finding
Sensitive state files are created with insufficient permission controls
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill does what it claims, but it persistently stores and prints sensitive OTP, verification-link, password, and token data with under-disclosed security tradeoffs and imperfect file permission handling.
Review before installing. Use this only for low-stakes disposable email workflows, avoid routing important account recovery or personal data through it, and delete ~/.tempmail_otp/ after use. Be aware that OTPs, verification links, the mailbox password, and JWT token may remain in plaintext files and terminal output.
scripts/tempmail_otp.py:40Sensitive state files are created with insufficient permission controls
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).
Reset all state:
rm -rf ~/.tempmail_otp/
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).
Reset all state:
rm -rf ~/.tempmail_otp/
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).
Reset all state:
rm -rf ~/.tempmail_otp/
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).
Reset all state:
rm -rf ~/.tempmail_otp/
Referenced artifact was not completely inspected
python3 scripts/tempmail_otp.py create
Referenced artifact was not completely inspected
python3 scripts/tempmail_otp.py create
Referenced artifact was not completely inspected
python3 scripts/tempmail_otp.py create
Referenced artifact was not completely inspected
python3 scripts/tempmail_otp.py create
Referenced artifact was not completely inspected
python3 scripts/tempmail_otp.py create
Referenced artifact was not completely inspected
python3 scripts/tempmail_otp.py create
Referenced artifact was not completely inspected
python3 scripts/tempmail_otp.py create
Referenced artifact was not completely inspected
python3 scripts/tempmail_otp.py create
Referenced artifact was not completely inspected
python3 scripts/tempmail_otp.py create
Referenced artifact was not completely inspected
python3 scripts/tempmail_otp.py create
Referenced artifact was not completely inspected
python3 scripts/tempmail_otp.py create
Referenced artifact was not completely inspected
python3 scripts/tempmail_otp.py create
Referenced artifact was not completely inspected
python3 scripts/tempmail_otp.py create
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).
3. **Cross-session persistence** - Works from any directory on your system
4. **Permission safety** - Sensitive credentials have proper file permissions
To reset all state: `rm -rf ~/.tempmail_otp/`
## Typical Workflow
The quick-start flow normalizes automatic saving of OTPs to disk, which creates session persistence for one-time authentication material without emphasizing the security tradeoff. OTPs are highly sensitive, and persisting them beyond immediate use increases the window in which another local process or user could recover and misuse them.
# Create a new temporary email
python3 scripts/tempmail_otp.py create
# Use the displayed email for signup, then monitor for OTP
The README explicitly states that account credentials, JWT tokens, OTPs, and extracted links are persisted under ~/.tempmail_otp/, but it does not clearly warn users that these artifacts are sensitive and may enable session reuse or account takeover if exposed. Even with 0600 permissions, local compromise, backups, shell history, or multi-user misconfiguration can leak this data.
The skill describes capabilities that involve file reads/writes, shell execution, and outbound network access, but it does not declare any explicit tool scope such as permissions or allowed-tools. This weakens least-privilege controls and makes it easier for an agent runtime to grant broader access than the skill actually needs, increasing the blast radius if the skill is misused or compromised.
The skill is intentionally designed for cross-session persistence by storing temporary email account state, credentials, and extracted authentication data under a user home directory. While functional, this creates a retention risk because sensitive registration artifacts remain available beyond the immediate task and may be reused, exfiltrated, or accidentally shared.
---
name: email-otp
description: Create temporary email addresses and monitor for registration OTP codes or validation links
version: 1.0.0
metadata:
author: etopro
The skill explicitly states that it extracts OTPs, validation links, and stores account credentials and JWT tokens persistently, but it does not provide a clear warning that these are sensitive authentication artifacts. OTPs and session credentials can enable account takeover or unauthorized verification if exposed to other local processes, users, logs, or backups.
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.
API: https://api.mail.tm
Usage:
tempmail_otp.py create [-d DOMAIN] [-e EMAIL] [-p PASSWORD]
tempmail_otp.py check [--timeout SECONDS] [--poll SECONDS] [--sender SENDER] [--subject SUBJECT]
tempmail_otp.py list
tempmail_otp.py domains
The script stores the full temporary mailbox state locally, including the mailbox password and bearer token, and also prints credentials to stdout in normal operation. Even for a temp mailbox, these secrets grant access to inbox contents and any OTPs or account-verification links sent there, so other local users, shell history/logging systems, or downstream tooling may capture them.
Detected: suspicious.exposed_secret_literal