Drown跨协议攻击TLS漏洞分析
北京时间 2016年3月2日,OpenSSL官方发布了新的安全公告。公告中提及修复了一个高危漏洞——DROWN跨协议攻击TLS漏洞。百度云安全威胁管理团队联合百度安全应急响应中心第一时间对事件触发应急响应和全网感知,深度分析了漏洞的危害和影响范围。
经分析,攻击者利用该漏洞可突破目前广泛使用的依赖SSL和TLS安全加密体系,互联网中有大约1100万站点或者服务受到此漏洞影响。
一、Drown跨协议攻击TLS漏洞分析
1. 漏洞危害
攻击者通过中间人攻击等手段截获和解密用户和服务器之间的加密通信,包括但不限于用户名和密码、信用卡号、电子邮件、即时消息,以及敏感文件。在一些常见的场景,攻击者还可以冒充一个安全的网站拦截或篡改用户看到的内容。
2. 攻击原理
DROWN漏洞主要利用SSLv2协议的脆弱性对TLS协议进行攻击。
SSLv2协议是90年代推出的安全协议,由于存在大量的安全问题,被后来的TLS协议给替代。目前主流的浏览器等客户端已经禁用了SSLv2协议。OpenSSL官方在2010年的0.9.8n和1.0.0的版本中也移除了对SSLv2的支持。但是在OpenSSL的服务端的实现并没有严格遵守官方的标准,若配置不当依然可以强制使用Export 加密套件(包括密钥交换,加密算法,HMAC等的组合),附 SSLv2 加密套件(22,24为对外出口的弱加密方式,只有40位加密强度)
North American Edition (U.S. and Canada)
Short nameLong nameDescription
27SSL_DES_192_EDE3_CBC_WITH_MD5Triple-DES (168 bit)
21SSL_RC4_128_WITH_MD5RC4 (128 bit)
23SSL_RC2_CBC_128_CBC_WITH_MD5RC2 (128 bit)
26SSL_DES_64_CBC_WITH_MD5DES (56 bit)
22SSL_RC4_128_EXPORT40_WITH_MD5RC4 (40 bit)
24SSL_RC2_CBC_128_CBC_EXPORT40_WITH_MD5RC2 (40 bit)
SSLv2协议存在的以下特性,使其非常容易受到Padding Oracle的攻击。
1)支持SSLv2协议的服务器在收到一个ClientMasterKey消息时,会立即发送ServerVerify确认信息,不校验客户端是否明文。
2)使用Export 40位加密时,master_key中只有5个字节以RSA加密
master_key = mkclear||mksecret,攻击者可通过服务端返回的server_write_key(session keys)解密ServerVerify中部分消息,如果解密成功,则是明文,不成功则是随机填充的队列。
3)重放相同的RSA密文请求时,根据判断解密的值是否相同知道上一次是否解密成功。
整理以上思路,总结出一个大致的攻击流程:
1)攻击者使用中间人攻击手段获取1000左右 TLS的握手包
2)攻击者根据特性讲ClientKeyExcchange生成大量的PKCS#1 v1.5加密的ClientMasterKey消息,向服务端不断发起SSLv2 Export_40的连接,最终生成一个有效的SSLv2 RSA密文。
3)利用padding oracle的攻击方式解密密文。
4)攻击者SSLv2 RSA明文 转换成TLS的明文,再进行其他恶意行为
3.检测方式
通过原理可以知道,只要服务端支持SSLv2 弱强度加密组件就容易受到影响。
可通过发起SSLv2 的连接包,从返回的banner里面判断是否支持
SSL_RC2_CBC_128_CBC_EXPORT40_WITH_MD5
SSL_RC4_128_EXPORT40_WITH_MD5
SSL_DES_64_CBC_WITH_MD5
等弱强度算法
在线检测
https://test.drownattack.com/?site=www.yahoo.com
使用nmap 检测
nmap -p 443 —script=sslv2 www.yahoo.com
如下表示存在
PORT STATE SERVICE
443/tcp open https
| sslv2:
| SSLv2 supported
| ciphers:
| SSL2_DES_192_EDE3_CBC_WITH_MD5
| SSL2_IDEA_128_CBC_WITH_MD5
| SSL2_RC2_CBC_128_CBC_WITH_MD5
| SSL2_RC4_128_WITH_MD5
| SSL2_DES_64_CBC_WITH_MD5
| SSL2_RC2_CBC_128_CBC_WITH_MD5
|_ SSL2_RC4_128_EXPORT40_WITH_MD5
附其他检测脚本
https://github.com/nimia/public_drown_scanner/blob/master/scanner.py
二、 Drown跨协议漏洞影响面分析
1. 全球影响面
从百度掌握的大数据来看,初步估计受影响的主机达500万,其中全球以美国、欧洲受影响最大,中国也有十余万主机面临威胁
2. 国内影响面
单独从国内来看,北上广为重灾区,占全国受影响主机3成以上:
三、Drown跨协议漏洞处理建议
可见国内情况也不乐观,建议大家及时升级openssl,并禁用sslv2版本协议。
在CentOS、redhat系统,可以通过如下命令升级:
# yum update openssl
ubuntu等版本可以通过如下命令升级:
# apt-get upgrade openssl
通过如下配置禁用apache的SSLv2:
SSLProtocol all -SSLv2
通过如下配置限制nginx中只使用TLS协议:
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;