G.O.S.S.I.P 阅读推荐 2025-03-26 电子邮件也能用来走私?

admin 2025年3月26日22:18:42评论10 views字数 2664阅读8分52秒阅读模式

今天我们要介绍USENIX Security 2025会议录用的一篇论文Email Spoofing with SMTP Smuggling: How the Shared Email Infrastructures Magnify this Vulnerability,在这篇论文中,作者首次对SMTP走私漏洞(SMTP Smuggling)对全世界范围内电子邮件系统的影响进行了综合评估:

G.O.S.S.I.P 阅读推荐 2025-03-26 电子邮件也能用来走私?

首先我们需要了解一下背景知识,什么是SMTP走私漏洞?2023年 SEC Consult 的一篇技术博客(https://sec-consult.com/blog/detail/smtp-smuggling-spoofing-e-mails-worldwide/)中对这项技术进行了介绍。

G.O.S.S.I.P 阅读推荐 2025-03-26 电子邮件也能用来走私?

SMTP协议是1981年由RFC 5321引入的电子邮件协议,作为一个明文协议,它采用CR+LF(rn)作为命令的中止符。当发送DATA命令时代表下面的部分为邮件正文,以rn.rn表示正文结束。而SMTP走私漏洞的问题就出在不同的SMTP服实现以及操作系统差异对换行的处理不一样:有的服务器可能把n.n也当作正文的结尾。这就导致如果正文部分插入了n.nn.n之上的部分会被解释成第一封邮件,而n.n之下的部分则被解释成第二封独立的邮件!同时,由于邮件正文部分是完全可控的,这种“走私”的邮件可以任意构造,所以第二封邮件的发件人字段便可以伪造成其他邮箱(例如下图中的admin[at]a.com)。

G.O.S.S.I.P 阅读推荐 2025-03-26 电子邮件也能用来走私?

虽然SMTP走私漏洞并不是一个全新的安全问题,但是此前的研究并没有对整个网络范围的电子邮件系统进行全面的测试,因此本文要来做第一个吃螃蟹的。首先,对于公共的邮件服务(qq, 163, gmail, outlook等),论文介绍了两个实验测试:

作者首先构造了一系列实验会用到的请求走私Payload,然后评估哪些收件系统受到了走私漏洞影响:作者使用自建的发件系统对测试目标发送邮件,观察目标是否收到了多封邮件。

G.O.S.S.I.P 阅读推荐 2025-03-26 电子邮件也能用来走私?
G.O.S.S.I.P 阅读推荐 2025-03-26 电子邮件也能用来走私?

从上面结果可以看到,尽管大部分主流邮件系统已经考虑了这种威胁,仍有一些系统没有对SMTP走私进行防护。有意思的是,sina.com会丢掉第一封真正的邮件,保留走私出来的第二封邮件。

第二个实验是评估发件系统是否会对Payload进行转义、过滤等防护手段:作者使用自己编写的Python客户端链接到发件系统,给自建的收件系统发送邮件,观察发件系统到收件系统之间的SMTP流量。

G.O.S.S.I.P 阅读推荐 2025-03-26 电子邮件也能用来走私?

结果表明,有13家邮件系统的发件组件采用了Dot Stuffing,会在以点开头的行的开头额外添加一个点(导致n.n变成n..n)。而Mail.ru和iCloud会在单独的n和r之前添加空格。有9家邮件系统会在发送邮件的时候对走私的邮件进行发件人检查,进而防止伪造。然而绝大多数系统没能正确处理字节,导致了绕过的可能。这很可能是由于发件系统后端把字符当成了字符串中止符。

除了伪造同域名的账户,SMTP走私对于公共邮件系统还会产生其他影响。很多域名通过SPF记录来委派第三方发件服务代表它们发送邮件,而请求走私漏洞可以让攻击者伪造成共享SPF基础设施内的所有域名例如攻击者通过gmail.com发送邮件伪装成youtube.com,当收件系统查询youtube.com的SPF记录时,它指向的ip段既是youtube.com也是gmail.com的发件服务器所在网段,所以能够通过SPF校验。当然,这一攻击的前提是发件系统没有完全过滤掉SMTP走私的Payload,且收件系统受到SMTP走私漏洞影响。

G.O.S.S.I.P 阅读推荐 2025-03-26 电子邮件也能用来走私?

作者分析了公共电子邮件服务使用的SPF基础设施,发现有81718个域名和outlook.com共享SPF设施,和gmail.com共享的则有63225个。这其中不乏一些高排名的域名,比如microsoft.com、google.com和youtube.com等。

作者接下来把分析目标指向了一些私有邮件系统(例如高校邮箱服务),它们的最大特点是很难注册测试账户进行实验。论文为了评估私有邮件系统,提出了三种不同的测试方法。

方法一:简单粗暴地找一些有邮箱账号的人协助实验,发送邮件,然后根据收到的邮件填写调查问卷。

方法二:利用DKIM对测试结果进行侧信道观察: 收件系统会对发件域发送DNS请求获取一个公钥来对DKIM签名进行校验。如果成功走私了第二封邮件,则会对第二封邮件的发件域发送DNS请求,否则只会对真正的发件域发送DNS请求。这个方案的好处是利用侧信道而不需要收件人反馈就能判断实验结果。不过,作者对第二个方法仍然不够满意:他们希望邮箱只会在收件系统有漏洞的时候收到邮件,没有漏洞的时候不会收到邮件。

方法三:作者构造了包含Payload的电子邮件,当服务器不存在漏洞时,它不会将n.n识别为结束指示符,SMTP会话会在超时后被主动终止,不发送任何邮件。当服务器存在漏洞时,第一封包含漏洞报告的邮件会被正常投递给管理员账户,收件服务器会发送响应表明上一封邮件已经发送,并开始处理下一封邮件的命令,而作者会在第二封邮件开始前用QUIT命令终止会话。这样的构造保证了只有在有漏洞的时候才能收到邮件。

G.O.S.S.I.P 阅读推荐 2025-03-26 电子邮件也能用来走私?

在评估完SMTP走私漏洞的影响情况之后,论文探索了SMTP走私漏洞的根源所在。作者首先通过SMTP Banner分析识别了受影响系统的底层基础设施,发现三类主要漏洞来源:邮件软件(例如Postfix)、安全网关(例如Proofpoint)和邮件服务(例如Yandex)。

接下来,作者对五个主流开源邮件软件(Postfix、Exim、Sendmail、Haraka、Axigen)进行了测试,发现最新版的Postfix、Sendmail和Exim在接收端已修复漏洞,但Haraka和Axigen仍然存在问题。在发送端,所有软件都存在不同程度的漏洞。

最后,作者们在源码和Postfix的一份报告(https://www.postfix.org/smtp-smuggling.html)中找到了SMTP走私漏洞的根本原因:这一切的始作俑者是Sendmail,由于在数十年前开始把"n"也认定为可接受的换行符,其他邮件系统包括Postfix和Exim为了兼容性沿用了这一设定,于是导致后续的服务都产生了问题。


论文:https://gangw.cs.illinois.edu/smtp-usenix25.pdf


原文始发于微信公众号(安全研究GoSSIP):G.O.S.S.I.P 阅读推荐 2025-03-26 电子邮件也能用来走私?

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年3月26日22:18:42
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   G.O.S.S.I.P 阅读推荐 2025-03-26 电子邮件也能用来走私?https://cn-sec.com/archives/3888412.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息