T09 · Insecure Skill Coding Practices
- Location
SKILL.md:148- Finding
Plaintext Storage of Reusable SMTP Credentials
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This is an SMTP email-sending skill, but it asks agents to send outbound messages and attachments using local execution and reusable email credentials without enough safeguards.
Review before installing. Use only a known, reviewed email_sender.py implementation, confirm recipients, subject, body, and every attachment before sending, and avoid storing SMTP passwords in a project file. Prefer a dedicated mailbox, app-specific password, restrictive file permissions or a secret manager, and revoke credentials if they may have been exposed.
SKILL.md:148Plaintext Storage of Reusable SMTP Credentials
The documentation does not clearly warn that using the skill will transmit message bodies and attachments to potentially external recipients over SMTP. In this context, the skill is designed specifically to send outbound communications and supports attachments, so missing disclosure and confirmation guidance materially increases the risk of accidental data exfiltration, privacy violations, and misdelivery.
The skill declares an overly broad activation scope using generic phrases like message sending, notification pushing, and communication integration. In an agent setting, this can cause the skill to be invoked for loosely related tasks and may lead to unintended outbound email transmission of sensitive content or attachments to external recipients.
L419 的“需要API Key,无Key环境无法使用”与 L398-L401 明确写明“无需额外 API Key”“本工具使用邮箱 SMTP 认证”直接矛盾。这不是简单的信息缺失,而是对工具所需凭证类型的主动性错误描述,会误导使用者对技能实际用途和依赖的理解。
The skill description and all user-facing documentation are presented exclusively in Chinese, with no indication that users may interact in other languages or that the locale restriction is intentional for a region-specific purpose. This can violate language/locale policy when a skill implicitly constrains language without opt-in.
No suspicious patterns detected.