Back to skill
Skillv1.0.1

ClawScan security

batch-send-mail · ClawHub's context-aware review of the artifact, metadata, and declared behavior.

Scanner verdict

BenignApr 20, 2026, 3:51 PM
Verdict
benign
Confidence
high
Model
gpt-5-mini
Summary
该技能的代码、说明和所需依赖在功能上与“批量发送个性化邮件”的描述一致;没有发现与声明目的不符的外部网络端点或隐蔽行为,但存在与凭据存储和使用相关的可操作性/隐私风险需要注意。
Guidance
该技能本身与“批量发送个性化邮件”的目的相符,但在安装/使用前请注意以下几点: - 凭据存储:首次运行会把 SMTP 邮箱和密码/授权码以明文写入 config/config.ini(项目目录下)。如果机器是共享的或受管理,敏感凭据可能被他人读取。建议在保存后对该文件设置严格权限(例如 chmod 600),或在不信任环境下避免保存。 - 命令行密码泄露:脚本同时支持 --sender-password,这会使密码在某些系统的进程列表中可见;尽量不要通过命令行传递明文密码,优先使用交互式输入或其它更安全的凭据传递方式。 - 使用专用授权码:对 Gmail/QQ/163 等邮箱,请使用应用专用密码或授权码,避免使用主密码。定期撤销不再需要的授权码。 - 附件与本地文件访问:脚本会读取并附加任意由你指定的文件路径。不要附加包含敏感信息或系统凭证的文件。 - 先做干运行(--dry-run):在发送前用提供的示例和 dry-run 模式验证变量替换与邮件格式,避免误发。 - 自动触发风险:平台允许技能被代理自主调用。若担心代理在未经你明确确认的情况下发送邮件,考虑禁用技能的自动调用或仅在手动触发下使用。 如果你接受上述风险,按说明使用并采取文件权限与凭据管理的最佳实践即可。若需要更强的安全性,考虑改为通过更安全的凭据存储(例如系统密钥链、受限环境变量或外部邮件 API 的 OAuth)来管理 SMTP 授权。

Review Dimensions

Purpose & Capability
ok技能名称与描述(从表格读取联系人、替换模板变量、通过 SMTP 发送邮件)与实际代码和 SKILL.md 中的要求一致。所列依赖(pandas、openpyxl)与读取 CSV/Excel 的功能相符。没有要求与邮件发送无关的云凭据、外部 API key 或非必要二进制。
Instruction Scope
noteSKILL.md 和脚本明确限定为读取表格、模板、可选附件并通过用户提供的 SMTP 服务器发送邮件。说明会在首次运行时交互式请求 SMTP 信息并保存到本地配置文件,脚本可做干运行(preview)。注意:脚本会读取任意由用户指定的附件文件路径并将其附加到邮件,这在功能上合理但会访问本地文件系统中任意路径(以用户权限),应谨慎指定。
Install Mechanism
ok这是 instruction-only(含一个 Python 脚本)且没有安装脚本。依赖通过 requirements.txt 指定(pandas、openpyxl),这些与功能相称且来自常见 Python 包。没有看到不受信任的远程二进制下载或可疑安装步骤。
Credentials
concern技能不需要平台环境变量或外部凭据声明,但实现会将 SMTP 凭据以明文形式保存到项目下的 config/config.ini;并且接受 --sender-password 命令行参数(在某些系统上会在进程列表中暴露)。保存明文密码和通过命令行传递敏感凭据是隐私/安全风险,尤其在共享或受管理的主机上。
Persistence & Privilege
note技能不会要求 'always: true' 或修改其他技能/系统的配置。然而它会在首次运行时在 repo 根目录下创建并保存 config/config.ini(持久化用户 SMTP 凭据),这是预期行为但具有持久性影响。技能默认允许模型自主调用(平台默认),这意味着如果被代理自动触发可能会执行发送流程;与凭据持久化结合时会扩大误用风险,建议在高敏感环境中注意该行为。