Drown跨协议攻击TLS漏洞分析

Posted wecloud1314

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Drown跨协议攻击TLS漏洞分析相关的知识,希望对你有一定的参考价值。

北京时间 2016年3月2日,OpenSSL官方发布了新的安全公告。公告中提及修复了一个高危漏洞——DROWN跨协议攻击TLS漏洞。百度云安全威胁管理团队联合百度安全应急响应中心第一时间对事件触发应急响应和全网感知,深度分析了漏洞的危害和影响范围。

经分析,攻击者利用该漏洞可突破目前广泛使用的依赖SSL和TLS安全加密体系,互联网中有大约1100万站点或者服务受到此漏洞影响。

 

一、Drown跨协议攻击TLS漏洞分析

  1. 漏洞危害

攻击者通过中间人攻击等手段截获和解密用户和服务器之间的加密通信,包括但不限于用户名和密码、信用卡号、电子邮件、即时消息,以及敏感文件。在一些常见的场景,攻击者还可以冒充一个安全的网站拦截或篡改用户看到的内容。

  1. 攻击原理

DROWN漏洞主要利用SSLv2协议的脆弱性对TLS协议进行攻击。ssl证书申请

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 name Long name Description

27 SSL_DES_192_EDE3_CBC_WITH_MD5 Triple-DES (168 bit)

21 SSL_RC4_128_WITH_MD5 RC4 (128 bit)

23 SSL_RC2_CBC_128_CBC_WITH_MD5 RC2 (128 bit)

26 SSL_DES_64_CBC_WITH_MD5 DES (56 bit)

22 SSL_RC4_128_EXPORT40_WITH_MD5 RC4 (40 bit)

24 SSL_RC2_CBC_128_CBC_EXPORT40_WITH_MD5 RC2 (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

等弱强度算法

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;

以上是关于Drown跨协议攻击TLS漏洞分析的主要内容,如果未能解决你的问题,请参考以下文章

关于SSL/TLS协议信息泄露漏洞(CVE-2016- 2183)解决方案

openssl版本升级

CPN Tools 形式化建模分析TLS1.3握手协议

Heroku dynos 是不是容易受到 BEAST 的攻击? (TLS 1.0 CBC 漏洞利用)

Android安全之Https中间人攻击漏洞

Android Webview历史高危漏洞与攻击面分析