STARTTLS是明文通信协议的扩展,可以让明文通信连接直接变成加密连接(使用SSL或TLS加密),而不需要使用另外一个特殊的端口进行加密通信属于机会加密。电子邮件客户端和服务器之间的连接提供了两种使用TLS保护连接的方法:隐式TLS从一开始就对连接进行加密并在单独的端口上运行,而STARTTLS提供了一种将连接升级到TLS的机制。有时STARTTLS被视为一种机会主义加密模式,仅在可用时提供TLS保护。这很容易受到降级攻击。但是,现代电子邮件客户端通常希望强制执行STARTTLS,并且启用后,无法进行未加密的通信。通过STARTTLS升级连接很脆弱,容易受到许多安全漏洞和攻击。我们在STARTTLS实施中发现了40多个漏洞。我们的结论是,这些漏洞非常普遍,我们建议尽可能避免使用STARTTLS。我们假设中间人(MitM)攻击者可以修改电子邮件客户端和提供商的电子邮件服务器之间建立的连接。通过命令注入使用SMTP和IMAP窃取登录凭据2011年,Postfix开发人员WietseVenema描述了STARTTLS实现中的一个漏洞,该漏洞允许注入服务器解释为加密连接一部分的明文命令。这是通过使用STARTTLS命令向同一TCP段上的服务器发送其他命令来实现的。我们发现,虽然这个漏洞自2011年就已为人所知,但它仍然非常普遍。目前共发现15个漏洞实施场景,扫描中有2%的邮件服务器存在该漏洞。此命令注入可用于通过SMTP和IMAP协议窃取凭据。我们的攻击需要一个中间人(MitM)攻击者,他可以修改网络流量并在同一台服务器上拥有自己帐户的登录凭据。攻击者可以注入命令对其进行身份验证,然后开始发送(SMTP)或存储(IMAP)电子邮件,受害者发送的登录凭据将存储在攻击者可以访问的电子邮件中。命令注入也可用于跨协议攻击,以使用邮件服务器的证书提供HTTPS内容。通过响应注入伪造邮箱内容我们在电子邮件客户端应用程序中发现了一种类似于命令注入的攻击,称为响应注入。此漏洞会影响许多流行的邮件客户端,包括AppleMail、MozillaThunderbird、ClawsMail和Mutt。通过在TLS握手之前响应STARTTLS命令向服务器消息中注入额外的内容,我们可以注入客户端将处理的服务器命令,就好像它们是加密连接的一部分一样,可用于伪造邮箱内容。通过PREAUTH和REFERRAL窃取凭据导致IMAP连接降级在IMAP协议中,服务器可以通过PREAUTH命令在第一条消息中通知客户端它已通过身份验证。该协议禁止在已验证状态下使用STARTTLS命令。因此,如果客户端应用程序接受PREAUTH,它就不能强制执行STARTTLS。中间人攻击者可以使用它来阻止STARTTLS升级连接并强制客户端使用未加密的连接。该漏洞于2014年首次在Trojitá中被发现。我们发现多个其他电子邮件客户端应用程序也容易受到同一漏洞的攻击。当与IMAP功能登录引荐来源网址和邮箱引荐来源网址结合使用时,此漏洞尤其严重,它们允许服务器指示客户端登录到另一个IMAP服务器。通过使用PREAUTH来防止加密连接,攻击者可以使用引用来强制客户端将凭据发送到攻击者控制的服务器。幸运的是,许多客户不支持推荐。我们发现只有一个客户Alpine容易受到这种PREAUTH和RECOMMEND组合的影响。总结本文中描述的所有漏洞都依赖于从不安全连接到安全连接的转换,隐式TLS没有这种转换,因此不容易受到这些攻击。因此,我们认为隐式TLS比STARTTLS更安全。我们还指出,STARTTLS总是引入至少一个额外的连接,因此隐式TLS通常提供更好的性能。安全隐患我们认为,本文描述的攻击难以大规模执行,主要用于针对性攻击。因此,您应该始终更新您的软件并重新配置您的电子邮件客户端以仅使用隐式TLS。针对电子邮件客户端用户的安全建议如果可能,我们建议用户检查并配置他们的电子邮件客户端,以在专用端口(即SMTP/提交端口465、POP3端口995、IMAP端口993)上使用带有隐式TLS的SMTP、POP3和IMAP。某些邮件服务提供商,尤其是Microsoft和Apple,不支持SMTP/提交的隐式TLS。我们建议用户要求他们的邮件服务提供商提供更安全的隐式TLS选项。对于应用程序开发人员,电子邮件服务器和客户端应用程序都应默认提供隐式TLS。从长远来看,软件开发人员可能会决定完全不支持STARTTLS,以简化他们的代码和配置对话框和文件。我们建议在服务器端和客户端审核所有支持STARTTLS的应用程序,因为应用程序需要确保没有未加密的内容作为加密连接的一部分进行处理。IMAP应用程序必须确保它们不允许将PREAUTH与STARTTLS结合使用,可以使用EAST工具包,它允许测试应用程序。对于邮件服务器管理员,请确保您使用的服务器支持所有受支持协议的隐式TLS,如果可能,请考虑为IMAP、POP3和SMTP提交禁用STARTTLS。如果您确实需要支持STARTTLS,建议使用建议的工具针对所有支持的协议测试服务器的命令注入漏洞。如果服务器软件易受攻击,则应立即进行安全更新。常见问题STARTTLS不安全吗?STARTTLS有两种“模式”,“机会模式”和“强制模式”。在提交新邮件或访问现有邮件之前,电子邮件客户端必须使用用户名和密码进行身份验证。对于这些连接,必须严格执行从STARTTLS到TLS的转换,因为降级将暴露用户名和密码,并使攻击者能够完全访问电子邮件帐户。如何测试使用的软件是否易受攻击?我们提供允许测试电子邮件客户端和服务器的EAST工具包。使用我们的命令注入测试器测试您的电子邮件服务器的命令注入相对容易。testssl.sh(开发版)和TLS-Attacker/TLS-Scanner也会检查命令注入。其他支持STARTTLS或类似机制的协议是否受到影响?我们希望在其他使用STARTTLS的协议中看到类似的漏洞,例如XMPP、FTP、IRC或LDAP。因此,我们建议尽可能避免使用STARTTLS并使用隐式TLS。如何处理邮件服务器(MTA到MTA)之间的通信?传统上,电子邮件服务器之间的STARTTLS只能防止被动攻击,并且容易受到主动攻击,例如STARTTLS攻击。
