为什么 SPF 检查看上去没用?

为什么 SPF 检查看上去没用?

我为域名设置了 SPF 记录,但欺骗发件人仍然有效,原因很简单:

电子邮件中似乎有 3 种不同的“发件人”:

  • 回复
  • 返回路径
  • 信封来自

https://stackoverflow.com/questions/1235534/what-is-the-behavior-difference-between-return-path-reply-to-and-from了解更多信息

您的邮件客户端显示reply to为发件人的电子邮件,但邮件服务器似乎进行了 SPF 检查return pathenvelope from这对我来说毫无意义。

这意味着如果我发送一封电子邮件,其中说return pathenvelope fromhacker.net以及reply to[email protected]是我试图欺骗的,它将检查 的 SPF hacker.net,现在假设这是我为其配置了 SPF 的域,它将通过并作为来自的邮件传递到受害者的邮箱,[email protected]即使我不允许向 发送电子邮件victim.org,从而有效地绕过 SPF 检查。

有办法解决这个问题吗?似乎只有DMARC才能防止这种情况,但如果这是真的,SPF 检查的意义何在?

答案1

为了完成各种“发件人”值的列表,我想添加:

  • From,这是客户端设置的标头,在 RFC 5322 中定义(RFC 5322.From
  • Reply to,也是由客户端设置的标头,定义在 RFC 5322 中
  • Return path并且都引用SMTP 会话期间命令Envelope from的参数( )MAIL FROMRFC 5321.MailFrom

DMARC 的目的是传达适用于 SPF 和 DKIM 均未通过的邮件的策略,而不是依赖本地策略。此策略由发件人的域名所有者表达(使用p=DMARC 记录的参数)。

在 DMARC 评估期间,标识符对齐检查(参见 RFC 7489 第 3.1 节),以确保:

  • RFC 5321.MailFrom传递的 SPF的域名与RFC 5322.From
  • 传递的 DKIM 中使用的域名与RFC 5322.From

因此,要解决您的问题,您应该在 DNS 区域中发布 DMARC 记录victim.org

_dmarc.victim.org IN TXT "v=DMARC1; p=quarantine; rua=mailto:[email protected]"

这将确保标识符对齐失败(如您的示例所示)将导致 DMARC 失败,并且该邮件将被标记为垃圾邮件。

SPF 检查的目的是确保 SMTP 会话期间客户端的 IP 地址得到 所有者的允许hacker.net。在您的示例中,SPF 的作用hacker.net不是保护victim.org:-)

如果你想鸟瞰,我发表了一篇文章,其中有一张SPF、DKIM 和 DMARC 如何协同工作以防止鱼叉式网络钓鱼(滚动至文章中间)

相关内容