FREAK Attack SSL/TLS漏洞分析 CVE-2015-0204

漏洞编号

CVE-2015-0204

描述

客户端OpenSSL的加密算法强度可被静默的降级到EXPORT_RSA级别,而该级别加密算法使用的密钥较弱,导致攻击者可以暴力破解出服务器RSA密钥。影响0.9.8zd之前的版本,以及1.0.0p之前的1.0.0系到和1.0.1k之前的1.0.1系版本。这个漏洞是由s3_clnt.c中的ssl3_get_key_exchange函数造成的。

利用条件

当存在漏洞的浏览器或其他客户端连接到支持“出口级”加密算法的服务端时,它们的通信是可能受到FREAK Attack影响的。
1. 服务器如果不支持”出口级”加密算法,则不会受到影响。
2. 客户端如果修复了这个CVE漏洞,则也不会接受这样的弱RSA密钥。
所以可以在服务端禁止使用这些”出口级”的加密算法,以此减轻那些无法修复此漏洞的客户端所面临的风险。

检测

检测服务端,检测SSL/TLS服务端是否支持“出口级”的加密算法:
[bash]openssl s_client -connect www.akamai.com:443 -cipher EXPORT[/bash]
握手失败“alert handshake failure”,则表示不支持“出口级”的弱加密算法。

客户端检测,查看openssl版本:
[bash]
rpm -qa|grep openssl #CentOS, Red Hat, Fedora系
dpkg -l|grep openssl #Debian, Ubuntu系
[/bash]

影响范围和补丁情况

升级OpenSSL
[bash]
yum update openssl #CentOS, Red Hat, Fedora系
sudo apt-get install openssl #Debian, Ubuntu系
[/bash]

配置中间件
– 禁用出口级加密算法
[bash]
openssl ciphers MEDIUM
[/bash]

– 配置apache
[bash]
vi /etc/httpd/conf.d/ssl.conf
#添加
SSLCipherSuite HIGH:!aNULL:!MD5:!EXP
/etc/init.d/httpd restart
[/bash]

– 配置nginx
[bash]
#低版本的修改配置文件为
ssl_ciphers HIGH:!aNULL:!MD5;
#重启服务
/etc/init.d/nginx reload
[/bash]

参考配置:mozilla guide
最新补丁情况请点击,客户端影响情况:freakattack


漏洞前后

上世纪,美国试图控制强加密算法的出口。这个政策使得SSL/TLS标准一分为二。一是使用简短而易被破解的密钥,最初被命名为EXP。比如:EXP-DES-CBS-SHA。DES通常使用56-bit密钥(现在看来相当弱),EXP-DES 是一种使用40-bit密钥的变体,更加弱。(这些是OpenSSL的通用名,而不是TLS RFC的官方名)

当客户端连接服务器时,它使用服务器的RSA密钥来加密初始连接,也即是SSL握手(ssl handshake) 。在美国出口的配置中,这个密钥为512bits。二十年过去了,这曾被认为强壮的密钥已经很容易被破解出私钥。大概要花半天,耗费$100。正常操作过程中,如果客户端或服务器中的一个没有较好的加密算法选择,则只能都同意使用公认较弱的”出口级”密钥。某款1995年发布的浏览器躺枪。

关键问题在于,受到漏洞影响的话,即使是使用强加密(非”出口级”密钥)的OpenSSL客户端,也可以被欺骗,从而接受弱密钥通信。攻击者使用”出口级”密钥连接Web服务器,并且得到服务器返回的使用弱RSA密钥加密签名后的数据。然后,攻击者破解出其私钥。至此以后,攻击者就可以实施中间人攻击(MiTM)。攻击者使用破解出的密钥来加密数据,并与受害者通信,而受害者会成功接受这些弱加密的连接。攻击者继而控制所有受害者和服务端之间的通信。

对于那些不能修复那些存在漏洞的客户端(如:少部分用户所提供的服务依然要依赖于“出口级”浏览器,某款1995年发布的浏览器,从而无法升级。),可以在SSL服务端去除对”出口级”的加密算法的支持,以此减轻这些客户端所面临的风险。

References

State Machine AttACKs against TLS (SMACK TLS)
Akamai Addresses CVE 2015-0204 Vulnerability
A Few Thoughts on Cryptographic Engineering

Leave a comment

Your email address will not be published. Required fields are marked *