Logjam:TLS 漏洞 (CVE-2015-4000)
Red Hat 产品安全团队已发现在使用 Diffie-Hellman(DH)密钥交换协议时 TLS 连接中的各种问题。
背景资料
使用 Diffie-Hellman 密钥交换协议的 TLS 连接很容易受到攻击,中间人攻击者可将有漏洞的 TLS 连接降级至使用 512 字节导出级加密。这种攻击会影响支持 DHE_EXPORT 密码的所有服务器。这个攻击可通过为两组弱 Diffie-Hellman 参数预先计算 512 字节质数完成,特别是 Apache 的 httpd 版本 2.1.5 到 2.4.7,以及 OpenSSL 的所有版本。
Logjam 研究报告 探讨了以下与弱 DH 密钥有关的问题:
-
在 TLS 协议中使用 DHE_EXPORT 密码组合,或者使用导出级密码强度的 DHE 密钥:这些密钥的大小为 512 字节,如果给予足够强大的计算能力和充分的时间,就可以破解这些密钥。这在完整转发安全性(perfect-forward secrecy,PFS)中问题尤为严重,因为攻击者可以记录流量,并稍后进行破解。
-
在某些大范围应用的软件包中会使用预计算的质数,比如某些 Apache httpd 版本和 sshd 版本:这些弱点可被攻击者利用预先计算这些质数,并使用它们解密使用这些质数的流量,以便建立 TLS 连接。
-
TLS 协议中的漏洞,可导致 DHE 降级为 DHE_EXPORT:已为这个问题分配 [CVE-2015-4000](https://access.redhat.com/security/cve/CVE-2015-4000)。
影响
以下攻击可能会利用上述弱点:
-
离线解密弱 DHE 连接
这个攻击需要该服务器默认使用附带 512 字节参数的 Diffie-Hellman 密钥交换。这样无源网络攻击者就可以记录客户端与服务器之间的通讯,然后解密这些通讯。 -
DHE_EXPORT 降级,并离线解密 TLS 假启动扩展。
这个攻击需要服务器支持 DHE_EXPORT 密码组合,或者在非导出 DHE 密码中使用 512 字节参数。该客户端必须使用 TLS 假启动扩展。在这些情况下,攻击者可以记录客户端与服务器之间的通讯,然后解密这些通讯。 -
DHE_EXPORT 降级及中间人服务器模仿
这个攻击与上一个攻击类似,但不需要启用 TLS 假启动扩展。反之,攻击者必须依赖于客户端要等待相当长的时间方可完成握手。这是因为攻击者必须计算握手过程中的连接密钥,这个计算会需要几分钟时间。
解决方案
SSL/TLS 服务器
在 MITM 攻击中,攻击者会尝试使用 DHE_EXPORT 密码代表客户端连接到服务器。这是利用 TLS 协议中 DHE 和 DHE_EXPORT 密码组合编写方式漏洞完成的。利用这个协议漏洞可对支持 DHE_EXPORT 密码组合的服务器进行主动 MITM 攻击。
这个问题不影响 Red Hat Enterprise Linux 6 和 7 目前附带的 openssl 软件包版本,因为它们不包括 DHE_EXPORT 密码组合,或者其 DEFAUT 密码列表中的任意导出级密码组合。(使用 DEFAULT 密码首选项的应用程序不会使用导出级密码组合。但具体应用程序配置可能会重新开始使用导出密码。)请注意,只有在网络服务器使用 openssl 时才会出现这种情况。有关客户端问题的详情,请查看以下信息。
Red Hat Enterprise Linux 7 中的 openssl 软件包在作为服务器使用时,在其最初的发行本中,DEFAULT 就不包含导出级密码组合。在 Red Hat Enterprise Linux 6 中,会通过 Red Hat Enterprise Linux 6.6 发行本中的 RHBA-2014:1525 公告提供这个更改。
Red Hat Enterprise Linux 5 不支持其默认密码列表中的导出级密码组合。Red Hat 不计划更改 Red Hat Enterprise Linux 5 中的默认密码列表,因为这个 CVE 的等级为中度影响。有关在产品阶段 3 中涉及的安全公告,请查看 [Red Hat Enterprise Linux 生命周期](https://access.redhat.com/support/policy/updates/errata#Production_3_Phase)页面。
SSL/TLS 客户端
由于客户端不控制由 SSL/TLS 服务器控制的密码组合,只能通过拒绝 DHE 握手过程中的小质数进行防卫。要求较大的质数可能防止上述降级攻击。
OpenSSL upstream 将处理剩余的两个问题,方法是将客户端可接受的 DH 参数增大到 768 字节。这样即使攻击者降级该连接,客户端仍可以拒绝使用小于 768 字节的连接,使用小于 768 字节的连接很容易被击破。
目前,Red Hat Enterprise Linux 附带的 NSS 软件包的所有版本都接受 512 字节的 DHE 参数。以下 upstream bug 及相关承诺称可以解决这个问题,并将上限提高至 1023 字节:
- https://bugzilla.mozilla.org/show_bug.cgi?id=1138554
- https://hg.mozilla.org/projects/nss/rev/ae72d76f8d24
Red Hat 产品安全团队仍在就此问题进行研究,并可将其移植回 Red Hat Enterprise Linux 中的相关版本。
Openswan/Libreswan
Logjam 降级对 TLS 的攻击不会影响 Openswan 和 Libreswan 中的 IKE。openswan 和 libreswan 软件包提供的 pluto 守护进程提供 IKEv1 和 IKEv2,以便建立 IPsec VPN 通道,Logjam 攻击可该通道内的目标 TLS。Openswan 和 Libreswan 还同时拥有高于 MODP1024 的默认 DH 组,且不支持 MODP768 或低于 MODP768 的组。
JBoss 产品
有关如何减小 Logjam 漏洞对 JBoss 产品的影响的信息,请参考 Logjam: JBoss 产品中的 TLS 漏洞 (CVE-2015-4000)。
Comments